在新添加的数据节点之间分配Elasticsearch的主要分片

时间:2020-07-07 15:52:07

标签: elasticsearch elastic-stack elasticsearch-5

我正在寻找一种在新添加的数据节点之间自动分配Elasticsearch的主要分片的方法。

我知道一种实现此目的的方法是添加新节点后重新索引。一旦更改了集群配置,是否有任何内部配置或其他更简单的方法可以自动完成?

示例场景

最初,集群具有3个数据节点和一个索引,其中包含6个主分片和5个副本。因此,Elasticsearch在每个节点之间分配2个主要分片。一段时间后,我将数据节点的数量增加到6。 3个新节点自动共享未分配的副本,但不共享主碎片。 是否有一种无需重新编制索引即可实现此目标的方法?

1 个答案:

答案 0 :(得分:1)

您是正确的,除了@leandrojmp在评论中已经提到的cluster reroute API之外,Elasticsearch不会自动在新添加的数据节点上重定位主分片。

您可以尝试其他一些方法,但是这些方法都是有风险的,因此只有在拥有备份并且对操作有良好控制的情况下才应该这样做,而我让他们学习了更多有关播放和破坏ES的知识,并且拥有备份和完全控制权操作,是学习ES内部知识和解决问题的不同方法的好方法:

如果您有足够的副本(在您的情况下,您有5个副本),则可以将副本减少到2个,这将导致Elasticsearch重新平衡碎片(尽管不确定是否会导致主要碎片重新定位)并再次完成后,再次将副本增加到原始数量。

强行一段时间(至少60秒),在1个数据节点上停止弹性搜索过程,这将导致副本分片被提升为主分片并分配给新的数据节点。

恕我直言,集群重新路由API是最安全,最好的选择。

相关问题