Нумерация страниц с запросом на совпадение - PullRequest
1 голос
/ 04 июня 2019

Я пытаюсь выяснить, как выполнить разбиение на страницы с помощью запроса с несколькими совпадениями с использованиемasticsearch.

API scroll и search_after не работают. scroll не предназначено для пользовательских запросов в реальном времени согласно документации . search_after требует какого-то уникального поля для каждого идентификатора и требует, чтобы вы сортировали по этому полю согласно документации , но при использовании запроса с несколькими совпадениями вы в основном сортируете по баллам.

Итак, единственное, о чем я думал до сих пор, это сделать следующее:

Отправьте обратно последний идентификатор документа + счет и используйте счет в качестве поля сортировки. Но это потенциально может вернуть дубликаты документов, если другие документы были добавлены между двумя запросами.

1 Ответ

0 голосов
/ 04 июня 2019

Если вы хотите разбить на страницы, первым вариантом является использование параметров from и size в вашем запросе. Документация здесь

Нумерация результатов может быть сделана с использованием от и размера параметры. Параметр from определяет смещение от первого результат, который вы хотите получить. Параметр размера позволяет настроить максимальное количество возвращаемых хитов.

Хотя from и size могут быть установлены как параметры запроса, они также могут быть установленным в теле поиска. от значений по умолчанию до 0 и размера по умолчанию до 10.

Обратите внимание, что from + size не может быть больше, чем index.max_result_window настройка индекса по умолчанию 10 000. Смотрите прокрутку или поиск после API для более эффективных способов глубокой прокрутки.

Если вам не нужно разбивать результаты на 10 000 страниц, это ваш лучший выбор. max_result_window можно изменить, но производительность будет уменьшаться по мере увеличения номера выбранной страницы.

Но, конечно, если некоторые документы будут добавлены во время вашей нумерации пользователей, они будут добавлены, и ваша нумерация страниц может быть немного неточной.

...