gpt4 book ai didi

Elasticsearch 路由 : only documents with one routing key per shard

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

我们目前正在优化 Elasticsearch 索引的分片设置,以(意外地)减少响应时间。目前路由键的数量等于分片的数量。我们正在寻找一个设置,其中 分片中的所有文档都只有一个路由键 .

这就是它现在的样子,它应该是什么样子

当前

  • shard:0 -> 路线:bmx, cyclocrosser
  • shard:1 -> 路线:track-bike
  • 分片:2 -> 路线:
  • shard:3 -> 路线:下坡

  • 诚征
  • 分片:0 -> 路线:bmx
  • shard:1 -> 路线:track-bike
  • shard:2 -> 路线: cyclocrosser
  • shard:3 -> 路线:下坡

  • 有没有可能确保一个路由键是 仅路由到一个分片 ?目前我们是 面对空碎片 ,这似乎不是一个合适的解决方案。

    我们知道路由是基于 5.50 版本的 Murmur(参见:Murmur3HashFunction.java)。是否有任何选择来影响这种行为,有人可以提供更深入的见解,路由在内部是如何工作的。

    最佳答案

    总结结果:这是不可能的。

    为什么? 为了适用于大多数用例,路由不直接基于路由键,因为如果路由键的分布是这样的(不是我的情况,但一般来说,文档的分布可能会以非常不平等的方式结束)可能)。路由键的散列实现了这一点,即使具有特定路由的文档消失也不会最终出现在空分片中。

    您可以根据所使用的散列函数 (Murmur) 的知识创建一个解决方法,但如果 Elasticsearch 团队决定更改散列函数,这可能会中断。这已经发生了,所以依靠这样一个隐藏的功能是不值得的。

    实现这一点的唯一方法是为每个路由键创建一个索引,正如 Val 指出的那样。

    关于Elasticsearch 路由 : only documents with one routing key per shard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46808084/

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