Как эластичный поиск обрабатывает параллельные запросы на обновление индекса? - PullRequest
0 голосов
/ 28 сентября 2018

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

Я хочу знать, как будет работать эластичный поиск, если выполняется несколько параллельных запросовсделал для его обновления API по одному индексу, имеющему около 2,5 миллионов документов?

есть мысли?предложения?

1 Ответ

0 голосов
/ 28 сентября 2018

Обновить - это операция, при которой ElasticSearch просит Lucene shard зафиксировать изменения на диске и создать сегмент.Если вы запрашиваете обновление после каждой операции, вы создаете огромное количество микросегментов.

Слишком много сегментов удлиняют ваш поиск, так как ваш осколок должен последовательно просматривать все из них, чтобы вернуть поиск.результат.Кроме того, они потребляют аппаратные ресурсы.

Каждый сегмент использует дескрипторы файлов, память и циклы ЦП.Что еще более важно, каждый поисковый запрос должен проверять каждый сегмент по очереди;чем больше сегментов, тем медленнее будет поиск. из окончательного руководства

Lucene автоматически объединит эти сегменты в более крупные сегменты, но это также задача, требующая ввода-вывода.

Вы можете проверить this для получения более подробной информации

Но, насколько мне известно, обновление индекса 2,5 миллиарда документов займет такое же время в индексе 2,5 килобайта.Кроме того, кажется ( из этой проблемы ), что обновление является неблокирующей операцией.

Но это плохая схема для кластера эластичного поиска. Все операции CUDВаше приложение нуждается в обновлении?

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