Мы получаем информацию из Elasticsearch 2.1 и позволяем пользователю просматривать результаты. Когда пользователь запрашивает большой номер страницы, мы получаем следующее сообщение об ошибке:
Окно результатов слишком велико, размер от + должен быть меньше или равен: [10000], но был [10020]. См. Api прокрутки для более эффективного способа запроса больших наборов данных. Это ограничение можно установить, изменив параметр уровня индекса [index.max_result_window].
В эластичном документе говорится, что это связано с высоким потреблением памяти и использованием прокрутки api:
Значения выше, чем могут потреблять значительные фрагменты памяти кучи на поиск и на сегмент, выполняющий поиск. Безопаснее всего оставить это значение, так как это использование api прокрутки для любой глубокой прокрутки https://www.elastic.co/guide/en/elasticsearch/reference/2.x/breaking_21_search_changes.html#_from_size_limits
Дело в том, что я не хочу получать большие наборы данных. Я хочу получить только фрагмент из набора данных, который находится очень высоко в наборе результатов. Также в документе прокрутки говорится:
Прокрутка не предназначена для запросов пользователей в реальном времени https://www.elastic.co/guide/en/elasticsearch/reference/2.2/search-request-scroll.html
Это оставляет мне несколько вопросов:
1) Будет ли потребление памяти действительно ниже (если да, то почему), если я использую api прокрутки для прокрутки до результата 10020 (и игнорирую все, что ниже 10000) вместо выполнения «обычного» поискового запроса для результата 10000-10020?
2) Мне не кажется, что API прокрутки - вариант для меня, но мне нужно увеличить index.max_result_window. У кого-нибудь есть опыт с этим?
3) Есть ли другие варианты решения моей проблемы?
'Result window is too large, from + size must be less than or equal to: [10000] but was [47190]. See the scroll api for a more efficient way to request large data sets. This limit can be set by changing the [index.max_result_window] index level parameter.')
Он сказал, что у него 4719 страниц (каждая страница 10 результатов). и я думаю, что ваше предложение работает.