Elasticsearch Как добавить запрос bool в must_not с множественным соответствием в java API? - PullRequest
0 голосов
/ 11 октября 2018

У меня есть такой запрос в Elasticsearch:

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

Я пробовал ниже code.but это только для одного совпадения.

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

Как использовать must_not с multiple match в Java API. Спасибо.

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Выглядит немного, как будто первоначальный вопрос был неправильно понят.Если у вас есть несколько условий в одном созвездии mustNot, это не так просто, как добавить несколько .mustNot.Пример:

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

Если вы хотите исключить всех Дональдсов из Вашингтона, это не правильное решение, поскольку оно исключит ВСЕХ Дональдсов и ВСЕХ из Вашингтона.Если вы хотите объединить эти два атрибута, просто создайте новый запрос (подумайте, как если бы вы закодировали его в скобках ...):

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!
0 голосов
/ 11 октября 2018

Хорошее начало!Вы можете просто позвонить mustNot() столько раз, сколько вам необходимо:

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

Простой как это; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...