使用elasticsearch-py

时间:2018-10-02 13:21:36

标签: python sorting elasticsearch

我正在使用此查询从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():

docs says this about the preserve_order param

  

请注意,这可能是非常昂贵的操作,并且很容易   导致不可预测的结果,请谨慎使用。

事实上,我已经证实它确实会乱序返回一些文档。

因此,我正在考虑使用常规的扫描迭代+通过sortedcontainers模块进行排序。

还有更好的选择吗?

0 个答案:

没有答案