[英]Elasticsearch routing: only documents with one routing key per shard
我们目前正在优化Elasticsearch索引的分片设置,以(减少)减少响应时间。 当前,路由键的数量等于分片的数量。 我们正在寻找一种设置,其中分片中的所有文档仅具有一个路由键 。
目前就是这样,看起来应该是这样
当前
通缉
是否有可能确保将一个路由密钥仅路由到一个分片 ? 当前,我们面临的是空碎片 ,这似乎不是一个合适的解决方案。
我们知道路由基于版本5.50中的Murmur(请参阅:Murmur3HashFunction.java)。 是否可以选择任何方法来影响此行为,并且有人可以提供更深入的见解以及路由在内部如何工作。
总结结果: 这是不可能的。
为什么? 对于大多数用例来说,路由不是直接基于路由键,因为如果路由键的分配是这样的,那么文档的分发可能会以非常不平等的方式结束(不是我的情况,但通常是这样)可能)。 路由键的散列实现了这一目的,即使具有特定路由的文档消失也不会以空碎片结尾。
您可以基于使用的哈希函数(Murmur)的知识来创建解决方法,但是如果Elasticsearch团队决定更改哈希函数,则可能会失败。 而且这已经发生了,因此依靠这样的隐藏功能已经不省钱了。
实现此目的的唯一方法是为Val指出的每个路由键创建一个索引。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.