目录
查询集群的健康状况
查看集群中所有节点的分配信息
查询集群/索引的文档总计数
查询集群的分片分配信息
查询集群中索引的分片数、文档数或集群中包含哪些索引
查询集群的快照存储信息
查看集群状态信息
查看集群统计信息
查看集群中所有节点的节点属性
查询分片未分配的原因
集群开启密码访问
查询集群的健康状况
- 绿色:所有分片都可用
- 黄色:至少有一个副本不可用,但是所有主分片都可用
- 红色:至少有一个主分片不可用,数据不完整
GET _cat/health
GET _cluster/health
{
"cluster_name" : "my_cluster", 集群名称
"status" : "yellow", 集群健康值
"timed_out" : false, 是否超时
"number_of_nodes" : 3, 索引主分片数量
"number_of_data_nodes" : 3, 数据节点数量
"active_primary_shards" : 37, 活跃主分片数量
"active_shards" : 65, 活跃的分片数量
"relocating_shards" : 0, 迁移中的分片的数量
"initializing_shards" : 0, 初始化中的分片数量
"unassigned_shards" : 3, 未分配的分片数量
"delayed_unassigned_shards" : 0, 延迟未分配的分片数量
"number_of_pending_tasks" : 0, 尚未执行的集群级别更改的数量
"number_of_in_flight_fetch" : 0, 未完成的提取次数
"task_max_waiting_in_queue_millis" : 0, 自最早启动的任务等待执行以来的时间
"active_shards_percent_as_number" : 95.58823529411765 集群中活动分片的比率,以百分比表示
}
查看集群中所有节点的分配信息
GET _cat/nodes?v
获取每个节点的分配情况,包括获取其分配的 IP 地址、资源占用信息、角色等
查询集群/索引的文档总计数
GET _cat/count
计算集群中的文档总数
GET _cat/count?v
// 返回结果:
epoch timestamp count
1654141686 03:48:06 13342
计算product 索引中的文档总数
GET _cat/count/product?v
// 返回结果
epoch timestamp count
1654141931 03:52:11 13
此命令可被_count API 替代
GET product/_count
// 返回结果
{
"count" : 13,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
}
}
查询集群的分片分配信息
GET _cat/shards?v
用于查看分片所处位置,包括所处哪个节点以及所处节点的 IP 地址。常见的使用场景如:索引的生命周期管理、数据流等
查询集群中索引的分片数、文档数或集群中包含哪些索引
GET _cat/indices?v
此命令一般用于查看及群众包含哪些索引。可查询信息包括但不仅限于
- 索引的健康状态
- 索引的打开关闭状态
- 索引名称
- 索引文档数量
- 被删除的文档数量
- 主分片数量
- 副本分片数量
查询集群的快照存储信息
GET /_cat/snapshots?v
用于获取索引数据的 快照备份信息查询,也可用于指定快照名称进行查询:
GET /_cat/snapshots/<repository>
查看集群状态信息
GET _cluster/state
用于查询集群状态元数据信息,包括:
- 集群中的节点集
- 所有集群级设置
- 有关集群中索引的信息,包括它们的映射和设置
- 集群中所有分片的位置。
查看集群统计信息
GET _cluster/stats
此命令可以查询从集群范围的角度检索统计信息。API 返回基本索引指标(分片数量、存储大小、内存使用情况)和有关构成集群的当前节点的信息(数量、角色、操作系统、jvm 版本、内存使用情况、cpu 和已安装的插件)。
- 索引到分片的映射
- 文档技术统计
- fielddata
- 缓存信息
- 段文件信息
- 索引字段类型统计信息
- 分词器统计信息
- 集群节点角色统计信息
查看集群中所有节点的节点属性
GET _cat/nodeattrs
查看节点属性最常见的即查看节点的自定义属性,自定义属性用于节点标记,常被用于以下几种场景:
- 冷热集群部署
- 高可用集群架构部署
- 分片分配策略部署
查询分片未分配的原因
以下为查看my_index
编号为 0 的副本分片的未分配原因:
GET _cluster/allocation/explain
{
"index": "my_index",
"shard": 0,
"primary": false
}
输出结果:
{
"node_id" : "bgLGquyZSeOKbFBTJECjOQ",
"node_name" : "node1",
"transport_address" : "127.0.0.1:9302",
"node_attributes" : {
"rack" : "rack1",
"xpack.installed" : "true",
"transform.node" : "false"
},
"node_decision" : "no",
"deciders" : [
{
"decider" : "filter",
"decision" : "NO",
"explanation" : """node does not match index setting [index.routing.allocation.require] filters [_name:"node3"]"""
}
]
}
错误原因:node does not match index setting [index.routing.allocation.require] filters [_name:“node3”]
以下为所有分片未分配的原因的故障码以及描述,共12种:
* ALLOCATION_FAILED: 由于分片分配失败而未分配
* CLUSTER_RECOVERED: 由于完整群集恢复而未分配.
* DANGLING_INDEX_IMPORTED: 由于导入悬空索引而未分配.
* EXISTING_INDEX_RESTORED: 由于还原到闭合索引而未分配.
* INDEX_CREATED: 由于API创建索引而未分配.
* INDEX_REOPENED: 由于打开闭合索引而未分配.
* NEW_INDEX_RESTORED: 由于还原到新索引而未分配.
* NODE_LEFT: 由于承载它的节点离开集群而取消分配.
* REALLOCATED_REPLICA: 确定更好的副本位置并取消现有副本分配.
* REINITIALIZED: 当碎片从“开始”移回“初始化”时.
* REPLICA_ADDED: 由于显式添加了复制副本而未分配.
* REROUTE_CANCELLED: 由于显式取消重新路由命令而取消分配.
不同的问题原因需要不同的解决方案,针对以上问题原因,关闭分片过滤器即可:
PUT my_index/_settings
{
"index.routing.allocation.require._name": null
}
集群开启密码访问
1)假设有三台es服务器,在服务器1上生成 TLS 和身份验证,将会在 config 下生成 elastic-certificates.p12 文件,将此文件传到其他两个节点的 config 目录,注意文件权限:
-> bin/elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass ""
2)将 config目录下的elastic-certificates.p12文件上传至其他2台服务器的config目录下,重启ElasticSearch服务,3台服务器都需要执行;
3)设置密码,在服务器1上执行命令:
bin/elasticsearch-setup-passwords interactive
随后按照提示依次输入elastic、apm_system、kibana、logstash_system、beats_system、remote_monitoring_user这6个用户的密码,完成后数据会自动同步至其他2个节点。
4)再次在浏览器中访问ES,http://ip地址:9200,就可以看到需要用户名密码访问了。