1、查询分片未分配的原因
1.1 问题场景描述
学习 Elasticsearch 最常遇到的一种情况:分片未分配

索引未分配的原因有很多种,准确的说有一共有 12 种。对于很多人来说,没有多年ES使用经验很难马上判断出索引未分配的原因,只能在网上去搜,然后一种一种方法的去试。线上出问题时间是分秒必争的。这就要求必须在最短的时间内定位问题。
1.2 诊断方式

以下为查看my_index
编号为 0 的副本分片的未分配原因

以下为查询结果核心代码

原因:node does not match index setting [index.routing.allocation.require] filters [_name:"node3"]
由此可见,索引分片未分配原因为分片过滤器阻挡了分片分配,查询到病症,方可对症下药。关闭过滤器即可
1.3 解决方案
不同的问题原因需要不同的解决方案,针对以上问题原因,关闭分片过滤器即可。我将在后续给出常见的分片未分配原因的不同解决方案

1.4 所有 12 种分片未分配原因汇总
以下为所有分片未分配的原因的故障码以及描述,共12种

2、查询集群的健康状况
2.1 健康状态
•绿色:所有分片都可用•黄色:至少有一个副本不可用,但是所有主分片都可用•红色:至少有一个主分片不可用,数据不完整
可以通过一些客户端工具查看集群状态信息

2.2 查看状态信息
GET _cat/health
结果如下

GET _cluster/health
输出结构如下

3、查看集群中所有节点的节点属性
_cat/nodeattrs
3.1 常见使用场景
查看节点属性最常见的即查看节点的自定义属性,自定义属性用于节点标记,常被用于以下几种场景:
•冷热集群部署•高可用集群架构部署•分片分配策略部署

如上图所示,红框部分为通过自定义属性标记了三个节点处于不同的 rack 上,此类标记常用集群部署高可用策略等
4、查看集群中所有节点的分配信息
_cat/nodes?v
4.1 常见使用场景
此命令长用于获取每个节点的分配情况,包括获取其分配的 IP 地址、资源占用信息、角色等。

5、查询集群/索引的文档总计数
GET _cat/count
5.1 常见使用场景
此命令用于查看集群或者指定索引中的文档总计数,也可被_count API
替代,比如:
计算集群中的文档总数
GET _cat/count?v// 返回结果:epoch timestamp count1654141686 03:48:06 13342
计算 product 索引中的文档总数
GET _cat/count/product?v// 返回结果epoch timestamp count1654141931 03:52:11 13
此命令可被_count API
替代
GET product/_count// 返回结果{"count" : 13,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0}}
6、查询集群的分片分配信息
_cat/shards
6.1 常见使用场景
常用于查看分片所处位置,包括所处哪个节点以及所处节点的 IP 地址。
常见的使用场景如:索引的生命周期管理、数据流等
6.2 使用案例
GET _cat/shards?v
返回结果如下:

7、查询集群索引分片数、文档数或集群中包含哪些索引
_cat/indices
7.1 常见应用场景
此命令一般用于查看及群众包含哪些索引。可查询信息包括但不仅限于
•索引的健康状态•索引的打开关闭状态•索引名称•索引文档数量•被删除的文档数量•主分片数量•副本分片数量
7.2 使用
GET _cat/indices?v
返回结果如下

8、查询集群的快照存储信息
_cat/snapshots
8.1 常见使用场景
用于获取索引数据的 快照备份信息查询
8.2 使用
GET /_cat/snapshots?v
也可用于指定快照名称进行查询
GET /_cat/snapshots/<repository>
9、查看集群状态信息
_cluster/state
9.1 常见使用场景
用于查询集群状态元数据信息,包括:
•集群中的节点集•所有集群级设置•有关集群中索引的信息,包括它们的映射和设置•集群中所有分片的位置。
10、查看集群统计信息
_cluster/stats
10.1 描述
此命令可以查询从集群范围的角度检索统计信息。API 返回基本索引指标(分片数量、存储大小、内存使用情况)和有关构成集群的当前节点的信息(数量、角色、操作系统、jvm 版本、内存使用情况、cpu 和已安装的插件)。
•索引到分片的映射•文档技术统计•fielddata•缓存信息•段文件信息•索引字段类型统计信息•分词器统计信息•集群节点角色统计信息
10.2 使用
GET _cluster/stats

Elastic开源社区
点赞分享加关注,学习加速不迷路


节
日
DRAGON BOAT
FESTIVAL




