目录
[一 查看集群节点,分片的状态的命令](#一 查看集群节点,分片的状态的命令)
[1.1 查看节点数](#1.1 查看节点数)
[1.1.1 方式1](#1.1.1 方式1)
[1.1.2 方式2](#1.1.2 方式2)
[1.1.3 方式3](#1.1.3 方式3)
[1.1.4 总结](#1.1.4 总结)
[1.2 查看分片数量](#1.2 查看分片数量)
[二 es服务状态为yellow的排查](#二 es服务状态为yellow的排查)
[2.1 问题描述](#2.1 问题描述)
[2.2 排查步骤](#2.2 排查步骤)
[2.2.1 确认索引状态](#2.2.1 确认索引状态)
[2.2.2 案例](#2.2.2 案例)
[2.2.3 根本原因](#2.2.3 根本原因)
[2.2.4 解决办法](#2.2.4 解决办法)
[2.3 解决办法实操](#2.3 解决办法实操)
一 查看集群节点,分片的状态的命令
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 案例
在kibanna执行命令:
显示结果如下:

3.核心内容""a copy of this shard is already allocated to this node"
\[bocal-knowledge-repository0, node51qhp_fMQGyAMdm9C4x1K0, P, sSTARTED]"
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
