Аналоговая команда SQL LIKE для ElasticSearch - PullRequest
0 голосов
/ 26 января 2019

Подскажите аналоговую команду SQL LIKE для ElasticSearch.

Команда SQL:

SELECT * FROM cities where 'blah Chicago blah' LIKE CONCAT('%', name, '%');

Ожидаемый результат: [{id: 123, name: 'Chicago'}].


Предполагается, что он будет использоваться для нечеткого поиска объектов в тексте.

Ответы [ 2 ]

0 голосов
/ 03 февраля 2019

Elastic Search не подходит для таких задач ( он предназначен для работы с текстом как массивом слов, а не как массивом символов).

Теперь я использую расширение pg_trgm (слово_схожесть (текст, текст)) для своей задачи.

0 голосов
/ 01 февраля 2019

Это не совсем то, что вам нужно, но мы можем начать с:

{
  "query": {
    "query_string": { "default_field": "Name", "query": "Chicago" }
  }
}

Этот запрос возвращает все документы с работой Chicago.

Вы можете изменить запрос:

{
  "query": {
    "query_string": { "default_field": "Name", "query": "*Chicago*" }
  }
}

В этом случае вы получаете документы со словом Chicago и со словами, которые включают, например, слово Chicago - ChicagoTown.

...