получить более 10000 отсортированных документов, используяasticsearch-py - PullRequest
0 голосов
/ 02 октября 2018

Я использую этот запрос для получения документов из ES, отсортированных по полю timestamp:

from elasticsearch_dsl import Search
s = Search(using=es, index='gps_points', doc_type="gps_point")
s = s.filter("range", timestamp={'gte': start_timestamp, 'lte': end_timestamp})
s = s.sort("timestamp")
s = s[0:10000]
r = s.execute()
for point in s:
    ....

Чтобы получить более 10000 отсортированных документов, я нашел этот альтернативный метод итерации:

for point in s.params(preserve_order=True).scan():

, но в документах говорится об preserve_order параметре :

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

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

Так что в качестве альтернативы я рассматриваю использование регулярной итерации сканирования + сортировку с sortedcontainers module.

Есть ли лучшая альтернатива?

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