ElasticSearch использует match_phrase и multi_match вместе - PullRequest
0 голосов
/ 19 июня 2019

Я использую ES 7.1, я хочу запросить, используя множественное совпадение, чтобы получить результат из нескольких полей, но я хочу получить результаты с помощью match_phrase для определенного поля.

Я пробовал много вещей, этоверсия, наиболее близкая к тому, что я хочу:

'bool' : {
    'must' : {
        'multi_match' : {
            'fields' => ['titre', 'subtitre', 'description'],
            'query' => $query
        },
        'match_phrase' : {
            'titre' => $query
        }
    },
    'filters' : { // ... some filters }
}

Я получаю ошибку:

parsing_exception "," reason ":" [multi_match] искаженный запрос, ожидается [END_OBJECT]но найдено [FIELD_NAME]

Есть ли способ объединить оба критерия?Я не хочу создавать 2 запроса.

1 Ответ

0 голосов
/ 19 июня 2019

Если вам нужно более одного must подзапроса, вам просто нужно передать подзапросы в виде массива.Эта модификация должна работать (переведено в JSON):

{
  "query": {
    "bool": {
      "must": [
        {
          "multi_match": {
            "query": "hello",
            "fields": ["name", "brand_name"]
          }
        },
        {
          "match_phrase": {
            "title": "hello"
          }
        }
      ]
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...