我打算将弹性搜索旧索引迁移到新索引。索引被用作用户存储,因此在未来用户数量将增加。常见的场景是从索引中按文件选择用户。因此,很明显,更多的用户-较慢的搜索过程,因为弹性需要循环的大量文件计数。
假设currentRate是当前每秒对elasticsearch的请求速率,currentUserNumber是当前elasticsearch中的总用户,currentNumberOfShards是当前的碎片数(为了简单起见,假设只有2个碎片被划分为一个物理节点)。
另外,人们也知道预期的futureRate和futureUserNumber。
因此,为elasticsearch估计新的碎片数量是否正确:
futureNumberOfShards = (futureRate / currentRate) * (futureUserNumber / currentUserNumber)没有其他的条件,我不计算?
Note
我知道elasticsearch可以执行一些优化,但是在elasticsearch之外这样的条件很难计算,所以在最坏的情况下计算碎片数更正确。
Note 2
事实上,用户可以有不同数量的字段。对于搜索,只使用4-5个字段(不是所有用户都有)。这会影响搜索性能吗?又是如何做到的?
发布于 2015-07-22 06:53:24
对于elasticsearch来说,最好的性能是当碎片计数相等的数据节点数时。但这使得将来难以增加数据节点的数量。所以你可以选择-现在有更好的性能,或者为未来的节点留出一些空间。在我的集群中--开始时有两个节点,但是我已经做了4个碎片,现在我有了4个数据节点,而且性能非常好。
发布于 2020-10-20 10:46:04
减少3M文档:1在3M和500万文档之间分割,预期增长超过500万:2。5米以上: int (预期文件数/ 5M +1)
您可以在此链接中找到所有内容:
https://stackoverflow.com/questions/31554365
复制相似问题