【发布时间】:2020-10-20 18:46:04
【问题描述】:
我很高兴将 elasticsearch 旧索引迁移到新索引。该索引用作用户存储,因此将来用户数会增加。常见的场景 - 是通过索引中的文件选择用户。所以很明显,更多的用户 - 更慢的搜索过程,因为弹性需要循环大量的文档。
假设currentRate 是当前对elasticsearch 的每秒请求率,currentUserNumber 是elasticsearch 目前的总用户数,currentNumberOfShards 是当前分片数(为简单起见,假设只有2 个分片被放入一个物理节点) .
还已知预期 futureRate 和 futureUserNumber。
那么为 elasticsearch 估计新的分片数量是否正确:
futureNumberOfShards = (futureRate / currentRate) * (futureUserNumber / currentUserNumber)
还有其他一些我不计算的条件吗?
注意
我知道 elasticsearch 可以进行一些优化,但是这样的条件在 elasticsearch 之外很难计算,所以在最坏的情况下计算分片数更正确。
注2
事实上,用户可以有不同数量的字段。对于搜索,仅使用 4-5 个字段(并非所有用户都拥有所有这些字段)。这会影响搜索性能吗?怎么做?
【问题讨论】:
标签: java performance optimization elasticsearch sharding