首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elasticsearch路由:每个碎片只有一个路由密钥的文档

Elasticsearch路由:每个碎片只有一个路由密钥的文档
EN

Stack Overflow用户
提问于 2017-10-18 10:30:09
回答 1查看 426关注 0票数 1

我们目前正在优化Elasticsearch索引的切分设置,以减少响应时间。当前,路由密钥的数量等于碎片的数量。我们正在寻找一个设置,其中--一个碎片中的所有文档都是一个路由密钥--只有

这就是现在的情况和它应该是什么样子。

电流

  • 碎片:0 ->路线: bmx,cyclocrosser
  • 碎片:1 ->路线:履带自行车
  • 碎片:2条->路线:
  • 碎片:3条->路线:下坡

想要

  • 碎片:0 ->路线: bmx
  • 碎片:1 ->路线:履带自行车
  • 碎片:2个->路线: cyclocrosser
  • 碎片:3条->路线:下坡

是否有可能确保一个路由密钥只被路由到一个碎片?目前,我们正在面临空碎片,这似乎不是一个合适的解决方案。

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

EN

回答 1

Stack Overflow用户

发布于 2017-11-10 12:53:23

总结一下结果:是不可能的.

为什么?对于大多数用例而言,路由不是直接基于路由密钥的,因为如果路由密钥的分布是这样的(不是针对我的情况,一般情况下可能是这样),那么文档的分发可能会以非常不平等的方式结束。路由密钥的散列实现了这一点,即使是具有特定路由的文档的消失也不会以空碎片结束。

您可以根据使用的哈希函数(Murmur)的知识创建一个解决方案,但如果Elasticsearch决定更改散列函数,这可能会中断。这种情况已经发生了,所以依赖于这样一个隐藏的特性是不可取的。

实现这一目标的唯一方法是为每个路由密钥创建一个索引,Val指出了这一点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46808084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档