【问题标题】:How calculate elastcisearch shard count?如何计算弹性搜索分片数?
【发布时间】:2020-10-20 18:46:04
【问题描述】:

我很高兴将 elasticsearch 旧索引迁移到新索引。该索引用作用户存储,因此将来用户数会增加。常见的场景 - 是通过索引中的文件选择用户。所以很明显,更多的用户 - 更慢的搜索过程,因为弹性需要循环大量的文档。

假设currentRate 是当前对elasticsearch 的每秒请求率,currentUserNumber 是elasticsearch 目前的总用户数,currentNumberOfShards 是当前分片数(为简单起见,假设只有2 个分片被放入一个物理节点) .

还已知预期 futureRatefutureUserNumber

那么为 elasticsearch 估计新的分片数量是否正确:

futureNumberOfShards = (futureRate / currentRate) * (futureUserNumber / currentUserNumber)

还有其他一些我不计算的条件吗?

注意

我知道 elasticsearch 可以进行一些优化,但是这样的条件在 elasticsearch 之外很难计算,所以在最坏的情况下计算分片数更正确。

注2

事实上,用户可以有不同数量的字段。对于搜索,仅使用 4-5 个字段(并非所有用户都拥有所有这些字段)。这会影响搜索性能吗?怎么做?

【问题讨论】:

    标签: java performance optimization elasticsearch sharding


    【解决方案1】:

    对于 elasticsearch,最佳性能是当分片数等于数据节点数时。但这使得将来很难增加数据节点的数量。所以你可以选择——现在有更好的性能,或者为未来的节点腾出一些空间。在我的集群中 - 一开始有两个节点,但我已经制作了 4 个分片,现在我有 4 个数据节点,性能非常完美。

    【讨论】:

      【解决方案2】:

      更少的 3M 文档:1 个分片 3M 和 5M 之间的文档,预期增长超过 5M:2 个分片。 超过5M:int(预期文档数/5M +1)

      您可以在此链接中找到所有内容:

      https://thoughts.t37.net/designing-the-perfect-elasticsearch-cluster-the-almost-definitive-guide-e614eabc1a87#9898

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多