Elasticsearch - запрос данных, которые превышают 10 КБ - PullRequest
0 голосов
/ 18 октября 2018

Я недавно написал приложение, которое делает запросы к Elasticsearch.Я всегда использовал поля "from" и "size" для разбивки на страницы.Сегодня я понял, что это не работает для наборов данных, превышающих 10000.

Я изучил и scroll, и search_after, и хотя оба имеют смысл, я не уверен, что я мог бы использовать для своего приложения.Вот мои требования

  1. Я хочу показать 1000 результатов на странице
  2. Я хочу иметь возможность нажать СЛЕДУЮЩАЯ и просмотреть следующие 1000 результатов
  3. Я хочу нажать НАЗАД и посмотреть предыдущие 1000 результатов, что, как мне кажется, не позволяет прокрутка.

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Другим решением может быть увеличение max_result_window свойства индекса.Это позволит вам получать больше данных, используя из и size .

Помните, что это увеличит использование памяти кучи и время, необходимое для извлечения результатов, так как размер результата зависит от от + size .Сначала он извлекает результаты из + size и сохраняет их в памяти, а затем возвращает из объема данных.Итак, больше из + size , больше использования памяти кучи и больше времени для извлечения результатов.

В документации написано:

index.max_result_window Максимальное значение от + size для поиска по этому индексу.По умолчанию 10000. Поисковые запросы занимают кучу памяти и время, пропорциональные от + размер, и это ограничивает эту память.

0 голосов
/ 18 октября 2018

Да, search_after выглядит как возможное решение для вашего варианта использования, хотя вам нужно сделать то, что предлагается здесь , чтобы достичь НАЗАД нумерация страниц

...