有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

elasticsearch Elastic Search Java BoolQuery API应该过滤所有不匹配的内容

我有以下字段&;我的文档中的值,并且我正在尝试获取ids,它们都与我的输入查询不匹配

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

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)的结果


共 (1) 个答案

  1. # 1 楼答案

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

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