elasticsearch,elastic-stack,Java,elasticsearch,Elastic Stack" /> elasticsearch,elastic-stack,Java,elasticsearch,Elastic Stack" />

弹性搜索-JavaBoolQueryAPI应该过滤所有不匹配的

弹性搜索-JavaBoolQueryAPI应该过滤所有不匹配的,java,elasticsearch,elastic-stack,Java,elasticsearch,Elastic Stack,我的文档中有以下字段和值,正在尝试获取与输入查询不匹配的id 请在我的弹性搜索索引中查找我的文档 id region 1001 MEA 1002 MEA 1003 EUR 1004 MEA 1005 EUR 1006 AF 我想筛选与区域MEA不匹配的ID 我期待下面的结果 id region 1003 EUR 1005 EUR 1006 AF 现在,我使用下面的查询 QueryBuilder regionQB =

我的文档中有以下字段和值,正在尝试获取与输入查询不匹配的
id

请在我的弹性搜索索引中查找我的文档

id      region
1001    MEA
1002    MEA
1003    EUR
1004    MEA
1005    EUR
1006    AF
我想筛选与区域
MEA
不匹配的ID

我期待下面的结果

id      region
1003    EUR
1005    EUR
1006    AF
现在,我使用下面的查询

 QueryBuilder regionQB = QueryBuilders.boolQuery()
                    .must(QueryBuilders.termsQuery("catalog_product_id", catalog_product_id_list))
                    .filter(QueryBuilders.termQuery("region_id", "MEA"));

提供所有匹配(区域
MEA
)结果。

用于筛选与区域“MEA”不匹配的ID 您可以使用mustNot(),而不是使用
filter()
。 请参考以下代码

QueryBuilder regionQB = QueryBuilders.boolQuery()
                    .must(QueryBuilders.termsQuery("catalog_product_id", catalog_product_id_list))
                    .mustNot(QueryBuilders.termQuery("region_id", "MEA"));