Почему Elastic работает медленно, когда поиск с лайками и или? - PullRequest
0 голосов
/ 06 мая 2019

Я использую эластик для поиска больших данных.(более миллиарда строк, но только 2 столбца: идентификатор и заголовок)

Когда я выполняю поиск по ключевому слову идентификатора, это быстро, но если я ищу текст с заголовком «как», это занимает много времени.

медленный поиск:

       CAPTION LIKE '%TES%'
    OR CAPTION LIKE '%ASD%'
    OR CAPTION LIKE '%DSSS%'
    OR CAPTION LIKE '%VBCVB%'
    OR CAPTION LIKE '%ASDAS%'
    OR CAPTION LIKE '%GDGDF%'

заранее спасибо

1 Ответ

2 голосов
/ 06 мая 2019

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

Лучше использовать стратегию на основе ngram, если вы хотите получить более быстрые результаты, но это идет с ценой во время индексации, чем больше времени для индексации контента и большего количества диска.пробел.

Компромисс может заключаться в том, чтобы не использовать первый знак %, такой как:

   CAPTION LIKE 'TES%'
OR CAPTION LIKE 'ASD%'
OR CAPTION LIKE 'DSSS%'
OR CAPTION LIKE 'VBCVB%'
OR CAPTION LIKE 'ASDAS%'
OR CAPTION LIKE 'GDGDF%'

Поскольку Elasticsearch может затем выполнить некоторую оптимизацию, которая будет проверять не каждый отдельный термин в индексе, а толькоподмножество.

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