首页 > 解决方案 > 批量api中相同文档ID的Elasticsearch多个索引请求

问题描述

我们正在使用弹性搜索 6.0 并使用批量索引在单个请求中使用“索引”操作对许多文档进行索引。在单个请求中,我们可能会遇到在同一个文档上有多个“索引”请求的场景。在这种情况下,ES 会失败批量请求还是会按顺序处理所有请求?

Edit1:我使用脚本在我们正​​在处理乱序更新的批量请求中建立索引。因此,只要所有“索引”请求都得到处理,我们就没有任何问题。

标签: elasticsearch

解决方案


ES 不会失败,但不一定清楚哪个索引操作会“获胜”。它可能是最后一个,但由于批量批处理中的所有操作可能分布在多个摄取节点上,并且并非所有这些节点都以相同的速率处理索引操作,因此可能不清楚哪个操作将首先处理,哪个操作将最后处理。

您拥有的唯一保证是,在响应中,您将按照请求批处理中指定的顺序获得每个操作的状态。

如果您的索引只有一个主分片,那么您提交操作的顺序将与处理这些操作的顺序相同,因此最后一个获胜,但如果您在多个主分片上拥有多个主分片节点,那么你无法真正知道。

一个更好的问题是,为什么您事先知道只有一个会获胜,所以要为每个文档提交多个索引操作?


推荐阅读