目录
一 查看集群节点,分片的状态的命令
1.1 查看节点数
1.1.1 方式1
方式1:http://localhost:9200/_cat/nodes?v

1.1.2 方式2
方式2:http://localhost:9200/_cluster/health?pretty

说明:
"number_of_nodes": 3, // 集群总节点数 "number_of_data_nodes": 3, // 数据节点数
1.1.3 方式3
方式3:http://localhost:9200/_nodes?pretty

1.1.4 总结

1.2 查看分片数量
http://localhost:9200/student/_settings

二 es服务状态为yellow的排查
2.1 问题描述
当 Elasticsearch 集群状态变为 Yellow 时,表示所有主分片已分配,但部分副本分片未分配。
2.2 排查步骤
2.2.1 确认索引状态
http://localhost:9200/_cluster/health?level=indices&pretty

可以看到: "unassigned_shards": 3 // 未分配的副本分片数
2.2.2 案例:/_cluster/allocation/explain
在kibanna执行命令:post /_cluster/allocation/explain
显示结果如下:

3.核心内容“"a copy of this shard is already allocated to this node"
[[bocal-knowledge-repository][0], node[51qhp_fMQGyAMdm9C4x1K0], [P], s[STARTED]]”
4.分析如下:
4.1)根本问题:分片分配冲突
4.2)冲突类型:same_shard规则冲突
4.3)具体原因:
节点 BOCAIES01 (ID: 51qhp_fMQGyAMdm9C4x1K0) 上已存在该分片的主分片
Elasticsearch 禁止将同一分片的副本分配到已包含主分片的节点
4.4)其它辅助信息
索引名称:bocal-knowledge-repository
分片号:0
[P]: 表示主分片(Primary)
s[STARTED] 表示分片已正常启动
未分配原因:INDEX_CREATED(索引创建时产生的副本分片)
集群状态:所有节点决策均为 NO
分片类型:副本分片 ("primary": false)
2.2.3 根本原因
该索引的副本分片无法分配到任何节点,因为:
1.集群中只有一个数据节点 (BOCAIES01)
2.该节点已包含分片 0 的主分片
3.Elasticsearch 的 same_shard 规则禁止将副本分配到已有主分片的节点
2.2.4 解决办法
1.增加集群节点数
2.增加分片数的设置,单节点的话,设置副本为0;集群的节点数大于2,自己根据情况进行设置
2.3 解决办法实操
通过增加节点解决此问题后,执行健康检查:
GET /_cluster/health/your-indexName?pretty
预期返回:"status": "green" 和 "unassigned_shards": 0
本案例为单节点,所以这里设置副本为0;

查看结果:http://localhost:9200/_cluster/health/product?level=indices&pretty

410

被折叠的 条评论
为什么被折叠?



