首页 > 解决方案 > Elasticsearch Unassigned Shard:如何重新分配回来?

问题描述

我们有 3 个数据节点集群,我们所有的索引在每个索引上都有 1 个主分片 + 2 个副本分片。直到几天前,所有索引都在集群的绿色状态下正常运行。

出于某种原因,现在只有一个索引处于黄色状态,并带有 1 个未分配索引错误。当我运行时_cluster/allocation/explain,它告诉我“无法将分片分配给已存在分片副本的同一节点”。如果我查看 Kibana 上的集群运行状况,我不会在该节点上看到重复的分片。

在此处输入图像描述

所以我不太确定问题是什么。有人可以对此提供任何建议吗?

标签: elasticsearch

解决方案


这个说法是正确的。

the shard cannot be allocated to the same node on which a copy of the shard already exists由于在存在索引的主分片(P)的同一节点上分配副本(R)没有意义,因此使用 s 副本提供高可用性和容错性,并始终分配给副本的主分片不存在的节点。

现在在您的情况下,您提到您有 3 个数据节点,并且所有索引也有 3 个分片(1 P+ 2R),这使得在每个数据节点上分配 1 个分片(无论是 P 或 R 分片)是理想的。

你也是正确的cluster health on Kibana, I don't see a duplicate shard on that node.,P 或 R 不可能在同一个节点上。

由于您已经使用过_cluster/allocation/explain我假设您已经知道有问题的索引,所以只需遵循此讨论帖子中提到的建议,简而言之,将有问题的索引的副本数减少到仅 1 或增加数据节点。


推荐阅读