2

Я пытаюсь применить разбиение на страницы на результаты, запросив несколько раз, чтобы пройти через 10k барьер Elasticsearch. Поскольку результаты Elasticsearch могут различаться во время нескольких запросов, я хочу использовать сгенерированный идентификатор, чтобы получить следующие результаты.Elasticsearch как запросить в поле ID выше, чем x

Так, например, я запускаю запрос, который возвращает 1000 результатов. Затем я хочу получить значение идентификатора 1000-го результата и выполнить запрос типа: match: ID {{1000thID}}

Таким образом, я хочу получить результат 1001 до 2000 года. после этого 2001 до 3000, и так далее.

Я в настоящее время используют DSL Elasticsearch для питона для запроса на имя домена, как:

search.query('match', domainname=domainname) 

Как восстановить этот код, чтобы соответствовать указанным выше требованиям. ('match', _ ID> ID_Variable)

ответ

1

Лучший способ добиться того, что вы хотите, - это использовать API прокрутки. Однако, если вы все еще хотите продолжить этот путь, вы можете сделать это следующим образом:

last_id = ... 
search.filter('range', id={'gt': last_id + 1, 'lt': last_id + 1000}) 
+0

Черт, забыл сказать, что Сгенерированный идентификатор alphanummeric как: «AVfcOQSECcVao75vrqGf», поэтому выше решение не будет работать, я думаю! – JasperFennet

+0

И довольно важный :-) Вы все равно можете использовать свои собственные идентификаторы, если хотите. – Val

+0

Где я могу настроить, что он автоинкремент, Logstash или Elasticsearch? и любой источник о том, как это настроить? я посмотрел, имея свой собственный идентификатор, но все, что я могу найти, добавляется вручную. – JasperFennet

Смежные вопросы