elasticsearch - Elasticsearch Unassigned Shard:如何重新分配回来?
问题描述
我们有 3 个数据节点集群,我们所有的索引在每个索引上都有 1 个主分片 + 2 个副本分片。直到几天前,所有索引都在集群的绿色状态下正常运行。
出于某种原因,现在只有一个索引处于黄色状态,并带有 1 个未分配索引错误。当我运行时_cluster/allocation/explain
,它告诉我“无法将分片分配给已存在分片副本的同一节点”。如果我查看 Kibana 上的集群运行状况,我不会在该节点上看到重复的分片。
所以我不太确定问题是什么。有人可以对此提供任何建议吗?
解决方案
这个说法是正确的。
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 或增加数据节点。
推荐阅读
- c - 开罗图形:如何确定物理屏幕尺寸
- c# - C#:通过存储在字符串变量中的名称来反映类
- lumen - Lumen 5.6: php artisan make:auth
- java - 如何在oracle中的表上定义默认where子句
- mysql - MySQL 与 MariaDB - 相同的更新...在 MariaDB 中选择失败
- scala - 在 Spark SQL 中处理具有循环引用的模型?
- forms - Flutter 自动提示 TextField
- algorithm - 平衡二叉搜索树中特定级别的节点数是多少?
- javascript - Bootstrap 4 标签输入 - 仅从预定义列表中添加标签
- c# - 访问 C# 中的 windows 文件夹