ElasticSearch нумерация страниц по ScrollApi двигаться вперед и назад - PullRequest
0 голосов
/ 11 июля 2019

Можно ли двигаться вперед и назад, используя ScrollApi для разбиения на страницы в ElasticSearch?

Классическое решение (setFrom (), setSize ()) не подходит, потому что windows_size - маленький.

Код ниже scrollApi отлично работает для бесконечной прокрутки.

if (parameters.getOffset() == 1) {
    SearchRequestBuilder searchRequestBuilder = client.prepareSearch(MY_INDEX).setTypes(documentsType);
    //...
} else {
    //
    SearchResponse scrollResponse = client.prepareSearchScroll(parameters.getScrollId())
            .setScroll(TimeValue.timeValueMinutes(1)).get();
    //...
}

Ответы [ 2 ]

0 голосов
/ 12 июля 2019

Вы можете изменить свой дизайн, чтобы загружать данные на нескольких страницах за один раз и возвращаться к переднему краю, а внешний интерфейс обрабатывать нумерацией страниц.Давайте скажем, что на странице вы хотите показать 10 записей, затем получить 50 записей и вернуться к интерфейсу.Если пользователь прокручивает между этими 5 страницами, то никакой запрос к бэкэнду не приходит.Только если пользователь запросит следующий набор, используйте технику scroll api skip (я знаю, что она все еще может быть медленной) и извлекайте данные на следующих 5 страницах.

5 pages in a go

0 голосов
/ 12 июля 2019

Да, API прокрутки можно использовать для разбиения на страницы ответа, когда общее число результатов превышает 10000. Это работает так: 1. Сначала выполните поиск в ES с помощью ключевого слова и размера прокрутки (с указанием количества результатов на странице). 2. Таким образом, ES вернет вам первую партию результата и идентификатор прокрутки. 3. Вам нужно передать тот же идентификатор прокрутки при следующем вызове ES вместе с параметром размера, чтобы получить следующий пакет и т. Д.

Если у вас есть внешний интерфейс, вы можете передать в результате идентификатор прокрутки, чтобы следующий вызов из пользовательского интерфейса включал этот идентификатор в запрос, и вы могли использовать его в бэкэнд-сервисе для выполнения вызовов ES.

Официальный сайт с подробной информацией - https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-scroll.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...