我正在努力将elasticsearch旧索引迁移到新索引。索引用作用户存储,因此将来用户数将增加。常见的方法 - 从索引中选择文件。因此很明显,更多用户 - 搜索过程较慢,因为弹性需要循环遍历大量文档。
假设currentRate
是弹性搜索每秒的当前请求率,currentUserNumber
是弹性搜索中的总用户,currentNumberOfShards
是当前的分片数(假设为了简单起见,只有2个分片是放在一个物理节点上。)
此外,预计会futureRate
和futureUserNumber
。
估计弹性搜索的新分片数量是正确的:
futureNumberOfShards = (futureRate / currentRate) * (futureUserNumber / currentUserNumber)
我还有其他一些我不计算的情况吗?
注意
据我所知,elasticsearch可以执行一些优化,但是这些条件很难在弹性搜索之外进行计算,因此在最坏情况下计算分片数量更为正确。
注2
实际上用户可以拥有不同数量的字段。对于搜索,仅使用4-5个字段(并非所有用户都拥有所有字段)。这会影响搜索性能吗?怎么样?
答案 0 :(得分:0)
对于elasticsearch,最佳性能是当分片计数相等的数据节点数时。但这使得将来很难增加数据节点数量。所以你可以选择 - 现在有更好的性能,或为未来的节点留出一些空间。在我的集群中 - 开始时有两个节点,但我已经制作了4个分片,现在我有4个数据节点,性能也很完美。
答案 1 :(得分:0)
更少的3M文档:1个分片 介于3M和5M之间的文档,预计将超过5M:2个分片。 超过5M:int(预期文档数/ 5M +1)
您可以在此链接中找到所有内容: