【问题标题】:Elastic Search - Java BoolQuery API should filter which are all not matching弹性搜索 - Java BoolQuery API 应该过滤所有不匹配的
【发布时间】:2018-07-31 07:27:36
【问题描述】:

我的文档中有以下字段和值,我正在尝试获取与我的输入查询不匹配的 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)的结果。

【问题讨论】:

    标签: java elasticsearch elastic-stack


    【解决方案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"));
    

    【讨论】:

      猜你喜欢
      • 2021-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-10
      • 1970-01-01
      • 2016-03-30
      • 2021-10-27
      相关资源
      最近更新 更多