首页 > 解决方案 > 如何根据分片数计算 Elasticsearch 的分片数?

问题描述

我正在使用 Elasticsearch 版本 elasticsearch-7.13.4。我在互联网上找不到任何确切的答案。有什么公式吗?

标签: elasticsearchslice

解决方案


底层概念称为“切片滚动”,与分片数量无关。从链接的文档中:

默认情况下,首先在分片上进行拆分,然后使用 _id 字段在每个分片上进行本地拆分,公式如下: slice(doc) = floorMod(hashCode(doc._id), max) 例如,如果分片数量相等到 2 并且用户请求了 4 个切片,然后切片 0 和 2 分配给第一个分片,切片 1 和 3 分配给第二个分片。

但是,当使用自动分片(即slices=auto)时,Elasticsearch 会选择分片数作为分片数

将切片设置为自动将使 Elasticsearch 选择要使用的切片数量。此设置将每个分片使用一个切片,直至达到一定限制。如果有多个源,它将根据分片数最少的索引或后备索引选择分片数。

当切片数等于索引中的分片数时,查询性能最有效。[...] 将切片设置为高于分片数量通常不会提高效率并增加开销。


推荐阅读