gpt4 book ai didi

elasticsearch - elasticsearch:如果索引的所有分片中都存在文档,则更新文档

转载 作者:行者123 更新时间:2023-12-03 00:18:36 25 4
gpt4 key购买 nike

我用谷歌搜索所有索引碎片中ES中的文档(如果存在)。我找到了一种方法(/ _bulk api),但这需要我们需要指定路由值。我找不到解决问题的方法。如果有人知道以下情况,请告诉我。

  • 是否可以使用单个更新查询来更新索引所有分片中的文档?
  • 如果没有,是否有任何方法可以生成路由值,以便我们应该能够使用更新查询命中所有分片?
  • 最佳答案

    ES对于批量更新是理想的选择,ES建议通过查询获取文档,该文档需要使用扫描和滚动进行更新,更新文档并再次为其编制索引。同样在内部,ES从未更新文档,尽管它通过脚本提供了Update API。它总是使用更新的字段/值重新索引新文档,并删除旧文档。

    Is there any way to update the doc in all the shards of an index if exists using a single update query?.

    您可以检查 update API是否适合您的目的。也有可以通过查询更新的插件。 Check this.

    现在是路由部分并更新所有分片。如果您是在第一次为文档建立索引时指定了路由值,那么无论何时更新文档,都需要设置原始路由值。否则,ES将永远不知道文档驻留在哪个分片上,并且可以将其发送到任何分片(基于算法)。

    如果不使用路由值,则ES根据文档的ID使用一种算法来确定需要处理的分片。因此,当您通过批量API更新文档并保留相同的ID而没有路由时,该文档将保存在与先前相同的分片中,您将看到更新。

    关于elasticsearch - elasticsearch:如果索引的所有分片中都存在文档,则更新文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33540676/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com