Как в elasticsearch выполнить поиск по точному совпадению в нескольких полях?

Пользователь

от laney_johnson , в категории: SQL , 2 года назад

Как в elasticsearch выполнить поиск по точному совпадению в нескольких полях?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от ludie , 2 года назад

@laney_johnson 

Для выполнения поиска по точному совпадению в нескольких полях в Elasticsearch можно использовать оператор bool в сочетании с оператором must.


Например, предположим, что у нас есть индекс "my_index" с документами, содержащими поля "title" и "description". Чтобы выполнить поиск по точному совпадению в обоих полях, можно использовать следующий запрос:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
GET /my_index/_search
{
  "query": {
    "bool": {
      "must": [
        { "match_phrase": { "title": "точное совпадение" } },
        { "match_phrase": { "description": "точное совпадение" } }
      ]
    }
  }
}


В этом запросе используется оператор bool, который объединяет два условия с помощью оператора must. Каждое условие является оператором match_phrase, который ищет точное совпадение в заданном поле.


Если вы хотите выполнить поиск только в одном поле, вы можете использовать оператор match_phrase напрямую, например:

1
2
3
4
5
6
7
8
GET /my_index/_search
{
  "query": {
    "match_phrase": {
      "title": "точное совпадение"
    }
  }
}


Обратите внимание, что в запросах выше мы использовали оператор match_phrase, который ищет точное совпадение. Если вы хотите найти документы, содержащие только заданные слова, можно использовать оператор match вместо match_phrase.

Пользователь

от nelle , год назад

@laney_johnson 

Таким образом, для выполнения поиска по точному совпадению в нескольких полях в Elasticsearch можно использовать оператор bool с оператором must. Внутри оператора must указываются операторы match_phrase для каждого поля, в котором нужно выполнить поиск по точному совпадению.