Эластичный поиск — чем именно search_after лучше, чем примитивная разбивка на страницы (от и по размеру)?

avatar
Kunal gupta
9 августа 2021 в 06:20
147
1
0

Мне нужно просмотреть большой набор результатов. Теперь я понимаю, что примитивное разбиение по страницам здесь не очень хорошая идея, учитывая, что если мне нужно выполнить поиск, скажем, на 10-й странице, эластичный поиск должен будет загрузить все 10 страниц в память, отсортировать их, а затем агрегировать, чтобы получить результаты, которые не являются идеальная ситуация.

Однако при использовании поиска после мы предоставляем последнее отсортированное значение с первой страницы и в основном сообщаем эластичному поиску - "Дайте мне результаты, которые выходят за пределы этого поля". Мой вопрос здесь, как это производительность? Насколько я понимаю, это то же самое, что добавить новый фильтр к вашему исходному запросу, который говорит, что следующий набор результатов должен иметь значение сортировки больше, чем на последней странице. Это все, что есть, или есть что-то еще, что я упустил?

Источник

Ответы (1)

avatar
Val
9 августа 2021 в 06:38
0

Короче говоря, обычное разбиение на страницы с from/size всегда должно отслеживать все попадания из параметра from самого первого запроса (т.е. увеличивается с каждым новым разбиением на страницы).

Принимая во внимание, что при использовании search_after в этом нет необходимости, так как количество данных, которые нужно отслеживать, равно размеру параметра size (т. е. постоянно при каждой разбивке на страницы).

Если вы хотите получить более подробную информацию, я предлагаю вам взглянуть на следующие билеты:

Val
10 сентября 2021 в 04:17
0

Удачи с этим?