Как повысить соответствие фразы, но только в определенной области?

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

{
  "query": {
    "bool": {
      "should": [
        {
          "match_phrase": {
            "_all": {
              "query": "string",
              "boost": 5
            }
          }
        }
      ]
    }
  }
}

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

{
  "query": {
    "bool": {
      "should": [
        {
          "match_phrase": {
            "_all": {
              "query": "string",
              "fields": [
                "filed_name"
              ],
              "boost": 5
            }
          }
        }
      ]
    }
  }
}

но я получаю ошибку

запрос [match] не поддерживает [fields]]

1 ответ

Решение

Вы можете использовать множественный запрос и использовать phrase type сделать match_phrase в конкретных областях.

{
  "query": {
    "multi_match": {
      "query": "some string",
      "fields": ["title","summary"],
      "type": "phrase"
    }
  }
}
Другие вопросы по тегам