我的文档中包含以下字段和值,并试图获取与我的输入查询都不匹配的ids

请找到我的 Elasticsearch 索引中包含的文档。

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"));

给出所有匹配的结果(region 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"));

07-28 08:10