Как в elasticsearch сделать поиск по объединению полей?

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

от gussie.jones , в категории: SQL , 8 месяцев назад

Как в elasticsearch сделать поиск по объединению полей?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

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

от francisco.friesen , 8 месяцев назад

@gussie.jones 

Для того, чтобы сделать поиск в Elasticsearch по объединению нескольких полей, можно использовать функцию "multi_match".


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

1
2
3
4
5
6
7
8
9
GET my_index/_search
{
  "query": {
    "multi_match": {
      "query": "apple",
      "fields": ["title", "description"]
    }
  }
}


Этот запрос выполнит поиск в полях "title" и "description" с помощью функции "multi_match". Вы можете изменять список полей, указанных в "fields", чтобы настроить запрос на свои нужды.


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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
GET my_index/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "title": "apple"
          }
        },
        {
          "match": {
            "description": "apple"
          }
        },
        {
          "match": {
            "title": "banana"
          }
        },
        {
          "match": {
            "description": "banana"
          }
        }
      ]
    }
  }
}


Этот запрос использует булевый запрос и функцию "match", чтобы выполнить поиск по словам "apple" и "banana" в полях "title" и "description". Функция "should" означает, что найденные документы должны содержать хотя бы одно из указанных слов.