弹性搜索-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"));