我正在尝试编写一些Java代码来查询ES5实例。在ES1中,您可以使用OR和AND过滤器,orFilter和andFilter。 ES5中的等效功能是什么?我努力了 -

QueryBuilder fb1 = QueryBuilders.termQuery("term1", "value1");
QueryBuilder fb2 = QueryBuilders.termQuery("term1", "value2");
QueryBuilder fb3 = QueryBuilders.termQuery("term2", "value3");

QueryBuilder fb = QueryBuilders.boolQuery()
                        .must(fb1)
                        .should(fb2)

This gives results that match fb1, so this is not an OR

QueryBuilder fb = QueryBuilders.boolQuery()
                        .must(fb1)
                        .must(fb2)

This gives no results, so the AND worked.

我想弄清楚构造AND,或OR查询的方式

最佳答案

为了进行AND查询,请将所有条件置于“必须”中。

QueryBuilder fb = QueryBuilders.boolQuery().must(fb1).must(fb2);

为了进行OR查询,请将所有条件置于“应该”中。

QueryBuilder fb = QueryBuilders.boolQuery().should(fb1).should(fb2);

10-06 08:17