Я работаю над проектом с использованием ElasticSearch и запрашиваю его, чтобы получить информацию об участниках. В нем 3 миллиона записей.
Я провожу кампанию для 2 миллионов пользователей, и пользовательские данные присутствуют на elasticsearch6.2. Я запрашиваю ES и получаю записи партиями (по 50 записей за раз), используя прокрутка. Кроме того, я хочу сохранить ПОИСК контекст за 1 день, потому что, если процесс выполнения кампании завершится неудачно по какой-либо причине, я могу возобновить кампанию с того места, где она была остановлена. Таким образом, я уйду от начала кампании снова с начала. Я также сохраняю scrollID и буду использовать его для возобновления кампании.
Во время тестирования я обнаружил, что загрузка ЦП увеличилась на 50% (конфигурация ES: 2 узла с 4 осколками, работающими на aws, тип экземпляра: i3.xlarge.elasticsearch), а использование ЦП остается неизменным на уровне 50%.
Есть ли какая-либо связь между использованием ЦП и сохранением контекста поиска в течение 1 дня. Для завершения кампании BTW требуется 6 часов.
От документация
Normally, the background merge process optimizes the index by merging together smaller segments to create new bigger segments, at which time the smaller segments are deleted. This process continues during scrolling, but an open search context prevents the old segments from being deleted while they are still in use. This is how Elasticsearch is able to return the results of the initial search request, regardless of subsequent changes to documents.
Таким образом, с истечением срока действия курсора прокрутки до 24 часов кажется, что вы запрещаете Lucene объединять ваши сегменты, увеличивая загрузку ваших осколков.
Позже в документация есть объяснение, как очистить курсор прокрутки:
Search context are automatically removed when the scroll timeout has been exceeded. However keeping scrolls open has a cost, as discussed in the previous section so scrolls should be explicitly cleared as soon as the scroll is not being used anymore using the clear-scroll API:
Вы должны попытаться убрать курсор после завершения кампании.
Пожалуйста, не используйте здесь индийские слова. Другие люди не поймут, что такое «лакх-рекорды», не говоря уже о «L».