elasticsearch 扫描/滚动弹性搜索索引时是否有可预测的顺序?,elasticsearch,scroll,database-scan,elasticsearch,Scroll,Database Scan" /> elasticsearch 扫描/滚动弹性搜索索引时是否有可预测的顺序?,elasticsearch,scroll,database-scan,elasticsearch,Scroll,Database Scan" />

elasticsearch 扫描/滚动弹性搜索索引时是否有可预测的顺序?

elasticsearch 扫描/滚动弹性搜索索引时是否有可预测的顺序?,elasticsearch,scroll,database-scan,elasticsearch,Scroll,Database Scan,扫描ElasticSearch索引时,不可能根据索引应用任何排序。 但在这个过程中,对结果的顺序有什么定义吗?如果是,是否可以预测 背景资料: 我需要定期对500万份文件进行操作,每批1000份文件需要大约1分钟的处理时间。由于我无法确保每次运行过程都能完成,我希望让它在上次被中断的地方继续工作,例如,如果滚动结果是按ID排序的(我知道,不是),我会在代码中跟踪上次处理的ID,下一次运行不再处理任何ID为IDno的文档,因此排序顺序是不可预测的。我本打算建议使用时间戳,但后来我读了你问题的其余部

扫描ElasticSearch索引时,不可能根据索引应用任何排序。 但在这个过程中,对结果的顺序有什么定义吗?如果是,是否可以预测

背景资料:


我需要定期对500万份文件进行操作,每批1000份文件需要大约1分钟的处理时间。由于我无法确保每次运行过程都能完成,我希望让它在上次被中断的地方继续工作,例如,如果滚动结果是按
ID
排序的(我知道,不是),我会在代码中跟踪上次处理的
ID
,下一次运行不再处理任何ID为
IDno的文档,因此排序顺序是不可预测的。我本打算建议使用时间戳,但后来我读了你问题的其余部分:)


实际上,使扫描搜索“可恢复”的唯一方法是在某个字段(如时间戳或ID)上将文档分为多个部分,并使用范围查询一次仅滚动一个部分

谢谢你在这方面的意见。。。我可能会回到对数据库进行迭代,因为在执行范围查询时,对索引进行迭代(超快速迭代)的主要好处将不再适用。。。。