【发布时间】:2026-01-07 20:10:01
【问题描述】:
目前我必须更新在 elasticsearch 中索引的超过 100 万个文档中的一个字段。这是一项复杂的任务,因为该字段包含从 XML 文件生成的元数据,用于评估 xpath 表达式。我们必须遍历索引中的所有文档并更新该字段。因此,为了避免系统过度杀伤,我们决定使用 Ironworker 平台。
我已经阅读了几篇关于如何在 elasticsearch 中更新数百万个文档的帖子,例如 this one,但是鉴于我们要使用 Ironworkers,因此存在一些限制,例如一个任务只能运行 60 分钟。
问题:
考虑到 60 分钟的限制,我如何遍历所有文档并更新其字段。
我想打开并滚动并将 scroll_id 传递给下一个工作人员,但我不知道执行下一个任务需要多长时间,所以滚动可能会过期,我将不得不重新开始。
【问题讨论】:
-
1 Mio 文档可以在很短的时间内更新,但这取决于很多事情。仅施加 60 分钟的限制是因为您决定使用 Ironworker,但我相信还有其他替代方案不会过度破坏您的系统。不幸的是,我们对您的要求知之甚少。什么涉及检索 XML 元数据的“复杂任务”?您能否展示该 XML 元数据的示例?示例文档?
-
@Val,就是这样,这个任务可以像客户决定的那样复杂。元数据分析从用户上传的附件和他定义的 xpath 表达式列表开始。因此,我们需要为任何程度的复杂性做好准备。如果我能找到将一个铁匠与另一个铁匠联系起来的方法,并在一段已知的时间后进行第二次启动,那将是一个好的开始。这样我就可以为下一个工人保持滚动。
标签: elasticsearch nest ironworker