Как с помощью Elasticsearch получить более 1 000 000 записей?

Добрый день!

В каталоге Elasticsearch хранятся более 1 млн. товаров. Я вытягиваю id товаров из эластика, если вытягивать ±10 000 товаров, то нормально, но к примеру если вытягивать большее количество, то уже соответственно съедается оперативная память.

Есть ли способ вытянуть 1 млн. товаров блоками, например по 1 000 на 10 блоков. Тоесть берем записи блока, проводим процедуры над ним, чистим в памяти и переходим к следующему блоку и т.д.?
  • Вопрос задан
  • 894 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Flying
Выбирать произвольное количество результатов из Elasticsearch можно с использованием scroll API.

Это более-менее аналог курсоров в базах данных. Таким образом вы, определяя размеры окна и время жизни токена можете подстроить выборку под свои задачи.

У меня в проекте приходилось итерировать через scroll и больше миллиона документов - нормально работает.
Ответ написан
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Для начала запомнить что эластик самая прожорливая тварь на этом свете по ресурсам. Потом вспомнить что эластик это поисковый индекс, а не база данных и доставать из него больше десятка(условно) записей считается преступлением. Потом узнаем что у эластика есть лимиты на максимальную длину индекса для одного запроса и он настраивается (читать про индексы). Перестать это делать по тому что там все-равно есть аппаратные лимиты
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы