Создание тела запроса в коде

Я пытаюсь создать в коде следующий запрос:

{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "title1": "brown"
          }
        },
        {
          "match": {
            "title2": "fox"
          }
        },
        {
          "match": {
            "title3": "dog"
          }
        }
      ]
    }
  }
}

Вот мой код Java, созданный с помощью QueryBuilders

BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); 
boolQueryBuilder.must(matchQuery("title1", "brown")); 
boolQueryBuilder.must(matchQuery("title2", "fox")); 
boolQueryBuilder.must(matchQuery("title3", "dog")); SearchSourceBuilder 
searchSourceBuilder = new SearchSourceBuilder(); 
searchSourceBuilder.query(boolQueryBuilder);

String s = searchSourceBuilder.toString();

И я получаю не ту же строку ... Я получаю:

  {
"query": {
  "bool": {
    "must": [
      {
        "match": {
          "title1": {
            "query": "brown",
            "type": "boolean"
          }
        }
      },
      {
        "match": {
          "title2": {
            "query": "fox",
            "type": "boolean"
          }
        }
      },
      {
        "match": {
          "title3": {
            "query": "dog",
            "type": "boolean"
          }
        }
      }
    ]
  }
}

}

Что мне не хватает ...?

0
0
127
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Сначала вы используете .must, поэтому вам нужно, а не нужно.

Вот пример того, что вы хотите сделать

MatchQueryBuilder match1 = QueryBuilders.matchQuery("title1", "brown");
MatchQueryBuilder match2 = QueryBuilders.matchQuery("title2", "fox");
MatchQueryBuilder match3 = QueryBuilders.matchQuery("title3", "dog");

BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
boolQueryBuilder.should(match1);
boolQueryBuilder.should(match2);
boolQueryBuilder.should(match3);

String queryString = boolQueryBuilder.toString();

Другие вопросы по теме