我正在寻找最佳方法,以使用Java的OR逻辑对Elasticsearch进行复杂查询。我真的需要类似[[(((A和B)或(C和D)或(E和F和G))。
现在我使用ElasticsearchTemplate和org.springframework.data.elasticsearch.core.query.Criteria.class
。但是我无法在一个查询中实现OR逻辑,因此我不得不对Elasticsearch进行单独的请求:一个用于(A和B),一个用于(C和D),依此类推...您可以通过bool查询将其连接起来,例如此示例https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html
在您的示例中为:
boolQuery().should(boolQuery().must(A).must(B))
.should(boolQuery().must(C).must(D))
.should(boolQuery().must(E).must(F).must(G));