Elasticsearch - подстановочный знак против префикса против регулярного выражения и различия строки запроса и производительности - PullRequest
0 голосов
/ 22 декабря 2019

Я только начал использовать Elasticsearch для своего проекта, и я хочу искать как ключевое слово sql 'like%' .

  1. Может кто-нибудь объяснить, пожалуйстаВ чем различия между Подстановочный знак , Префикс , Строка запроса и Регулярное выражение ?

  2. Какиеможно искать с лучшей производительностью ?

  3. Это лучший способ быстрого поиска по тегам товаров с определением поля keyword и поискомодним из трех способов, которые я упомянул?

Я ценю того, кто мне ответит.

Спасибо.

1 Ответ

1 голос
/ 24 декабря 2019

Какой запрос лучше?

Позвольте мне ответить по пунктам.

  1. Может ли кто-нибудь объяснить, в чем различия между подстановочными знаками, префиксами, query_string и Regexp?

Они очень похожи в том, что они могут сделать и как они реализованы. Фактически, подстановочный знак , префикс и регулярное выражение одинаково плохо работают . query_string query позволяет выполнять более сложные запросы, например, с использованием логических операторов, таких как OR и AND. query_string поддерживает подстановочные знаки , которые, как я считаю, являются теми же подстановочными знаками, что и запрос wildcard.

Какой из них можно искать с лучшей производительностью?

Итог: все они плохие.

Это лучший способ быстрого поиска по тегам товара с определением поля ключевого слова и поиска одним из трех упомянутых мной способов?

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

Как реализовать автозаполнениес Elasticsearch?

Как вы упомянули в комментарии выше, вы хотели бы реализовать автозаполнение, поэтому тип данных search_as_you_type может быть именно тем, что вы ищете.

Другая похожая функция - подсказки . Они оба попытаются использовать более эффективное сопоставление на основе терминов, а не на основе регулярных выражений.

Надеюсь, это поможет!

...