Ինչպե՞ս եք մշակել խորքային էջանիշը: Եթե օգտվողը ուզում է տեսնել արդյունքների 100-րդ էջը, օգտագործելով Elasticsearch-ում ստանդարտ from/size, դա շատ թանկ է հիշողության տեսանկյունից: Օգտագործե՞լ եք Search After-ը։
sobes.tech AI
Պատասխան AI-ից
Для обработки глубокой пагинации в Elasticsearch действительно неэффективно использовать параметры from и size при больших значениях from, так как это приводит к большому потреблению памяти и снижению производительности.
Вместо этого часто применяют механизм search_after, который позволяет эффективно получать следующую страницу результатов, используя значения сортировки последнего элемента предыдущей страницы. Это работает как курсор, позволяя избежать пропуска большого количества документов.
Пример использования search_after в запросе:
{
"size": 10,
"query": { "match_all": {} },
"sort": [
{"timestamp": "asc"},
{"_id": "asc"}
],
"search_after": ["2023-01-01T00:00:00", "some_id"]
}
В Go-клиенте для Elasticsearch можно сформировать такой запрос, передавая значения search_after из последнего элемента предыдущей страницы.
Таким образом, для просмотра 100-й страницы лучше последовательно получать страницы, используя search_after, чем делать from=990 и size=10.
Если нужна случайная страница без последовательного перебора, можно рассмотреть использование Scroll API или изменение UX, чтобы избежать глубоких переходов.