Как реализовать пагинацию на elasticsearch через scroll / slice?
Допустим нужно переделать классическую пагинацию через size/from на scroll. На выходе иметь постраничную перемотку с перечнем количества страниц:
1, 2, 3 ...100500
Т.е. пользователь или поисковик может с первой страницы сразу перейти на 100499 страницу.
Из документации я понял, что scroll создает как бы снэпшот выдачи, и через slice как-то можно по этому снэпшоту перемещаться. Для slice в документации написаны параметры id и max, я не очень понимаю что это, поясните плз.
у меня в эластике пока 5 млн записей, со временем будут и все 100. Пагинация через from/size уже не работает на страницах более 10к, в тексте ошибки сам эластик пишет:
Result window is too large, from + size must be less than or equal to: [10000] but was [3804800]. See the scroll api for a more efficient way to request large data sets.
вообще, если я правильно понял, slice делит всю выдачу на max кусков и через id возвращает нужный кусок. Таким образом получается надо бить всю выдачу на total/index.max_result_window кусков и каждый из них пагинировать. Я правильно понял смысл срезов?