如何在 ElasticSearch 中使用扫描/滚动和分页和排序?

rub*_*uba 2 sorting pagination scroll python-2.7 elasticsearch

我有一个 ES DB,存储我每天运行的进程的历史记录。因为我只想在历史记录中每页显示 20 条记录(按日期排序),所以我使用分页(size + from_)组合滚动,效果很好。但是当我想在查询中使用排序时,它不起作用。所以我发现滚动排序不起作用。在寻找另一种替代方案时,我尝试了 ES 辅助扫描,它可以很好地滚动和排序结果,但使用此解决方案分页似乎不起作用,我不明白为什么,因为 API 说扫描将所有参数发送到底层搜索功能。所以我的问题是是否有任何方法可以结合这三个选项。

谢谢,

鲁本

scr*_*ibu 5

使用该elasticsearch.helpers.scan函数时,需要传入preserve_order=True启用排序功能。

(测试使用elasticsearch==7.5.1