Менее строгий поиск не возвращает хиты в ElasticSearch - PullRequest
0 голосов
/ 16 апреля 2019

Запрос ниже возвращает хиты, например, где name - «Сальдо по банкам»:

GET /_search

{ "query": {
    "multi_match": { "query": "Balances",
                     "fields": ["name","descrip","notes"] 
                   }
           }
 }

Так почему это ничего не возвращает? Обратите внимание, что запрос менее строг, слово «Баланс», а не «Балансы» с s.

GET /_search

{ "query": {
    "multi_match": { "query": "Balance",
                     "fields": ["name","descrip","notes"] 
                   }
           }
 }

Какой поиск вернул бы оба?

1 Ответ

1 голос
/ 17 апреля 2019

Вам нужно изменить отображение, чтобы иметь возможность сделать это.

Если вы не указали отображение с определенными анализаторами при создании индекса ,asticsearch будет использовать отображение и анализатор по умолчанию.

При отображении по умолчанию каждое текстовое поле будет отображаться как text и keyword, поэтому вы сможете выполнять полнотекстовый поиск (совпадать с частью строки) и поиск по ключевым словам (совпадать с целой строкой), нобудет использовать анализатор standard .

С анализатором standard ваш пример Сальдо по банкам станет следующим списком токенов: [ Balances , от , bank ], эти элементы добавляются в инвертированный индекс, и эластичный поиск может найти документы при поиске любого из них.

Когда выищите просто Баланс , этот термин не существует в инвертированном индексе, аasticsearch ничего не возвращает.

Чтобы иметь возможность вернуть оба значения Баланс и Балансы тебе нужно чанПолучите ваше отображение и используйте analyzer для английского языка, этот анализатор сократит ваши условия до их основы и сопоставит Баланс , Балансы , а также Балансировка , Сбалансированный , Балансировщик и т. Д.

Посмотрите на эту часть документации , чтобы увидеть, как работает процесс анализа.

И, конечно, вы также можете искать Баланс *, и он будет возвращать Баланс и Баланс , но это другой запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...