扫描 ElasticSearch 索引时,无法根据文档应用任何排序。但是在这个过程中,结果的顺序是否有任何定义?如果是,是否可以预测?
背景资料:
我需要定期对 5M 文档进行操作,每批 1.000 文档需要大约 1 分钟的时间来处理。由于我无法确保每次运行时都会完成该过程,因此我很乐意让它在上次中断的地方继续工作,例如,如果滚动结果是按排序的ID
(我知道,它是不是),我会跟踪ID
我的代码中最后处理的内容,并且在下次运行时不再使用 处理任何文档ID <= lastProcessedId
,以确保每个文档都得到定期处理。
顺便说一句:“处理文档”并不是指将其他信息写回索引,而是更新我数据库中的其他一些内容。在我的情况下,将时间戳写入索引文档无济于事,因为该过程被中断的原因之一可能是索引被替换为新索引(从头开始重建)。将处理后的时间戳写入数据库对我来说也不是一个理想的选择,因为迭代性能是我首先使用索引滚动的原因......