【问题标题】:Elasticsearch How to add bool query inside must_not with multiple match in java API?Elasticsearch如何在java API中使用多个匹配在must_not中添加bool查询?
【发布时间】:2018-10-11 07:34:44
【问题描述】:

我在 Elasticsearch 中有这样的查询:

{
    "query": { 
        "bool": { 
          "must_not": [
            { "match": "filed1" : "value1"},
            { "match": "filed2" : "value2"}
          ]
        }
      }
}

我尝试过下面的代码。但它只适用于单一匹配。

BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); boolQueryBuilder.mustNot(QueryBuilders.matchQuery("field1","value1");

在java API中使用must_notmultiple match的方法是什么。谢谢。

【问题讨论】:

    标签: elasticsearch elasticsearch-6 elasticsearch-java-api


    【解决方案1】:

    好的开始!您可以根据需要多次调用mustNot()

    BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); 
    boolQueryBuilder.mustNot(QueryBuilders.matchQuery("field1","value1"));
    boolQueryBuilder.mustNot(QueryBuilders.matchQuery("field2","value2"));
    

    就这么简单;-)

    【讨论】:

    • 你的意思是bool/must中的多重匹配?
    • 老实说,我不明白,我上面给你的正是那个,即“bool/must_not 中的多重匹配”
    • “我上面给你的就是那个”。谢谢你的回复。
    【解决方案2】:

    看起来有点像原来的问题被误解了。如果您在一个 mustNot-constellation 中有多个条件,那么这并不像添加多个 .mustNot 那样简单。示例:

    BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); 
    boolQueryBuilder.mustNot(QueryBuilders.matchQuery("name","Donald");
    boolQueryBuilder.mustNot(QueryBuilders.matchQuery("hometown","Washington");
    

    如果您想从华盛顿排除所有 Donalds,这不是正确的解决方案,因为它将排除 ALL Donalds 和 ALL 从华盛顿。 如果你想结合这两个属性,只需创建一个新的 Query (想像你会用括号对其进行编码......):

    BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); 
    
    BoolQueryBuilder subQuery = QueryBuilders.boolQuery(); 
    subQuery.must(QueryBuilders.matchQuery("name","Donald"); // must (positive!)
    subQuery.must(QueryBuilders.matchQuery("hometown","Washington"); // must (positive!)
    
    queryBuilder.mustNot(subQuery); // negate subQuery!
    

    【讨论】:

      猜你喜欢
      • 2016-08-19
      • 1970-01-01
      • 2019-11-13
      • 2020-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-06
      • 2013-11-10
      相关资源
      最近更新 更多