Elasticsearch 的 _cluster/health
API 是一个非常有用的工具,用于获取集群的健康状态。通过这个 API,你可以快速了解集群的整体状况,包括各个节点的状态、索引的分配情况等重要信息。
使用方法
要使用 _cluster/health
API,你可以向 Elasticsearch 集群发送一个 HTTP GET 请求。基本的请求格式如下:
GET /_cluster/health
你也可以为特定的索引或一组索引来检查健康状态,例如:
GET /my_index/_cluster/health
或者多个索引:
GET /index1,index2/_cluster/health
参数
level
(可选): 控制返回的信息的详细程度。默认值是cluster
,可以设置为indices
或shards
来获取更详细的索引或分片级别的信息。wait_for_status
(可选): 可以设置为green
,yellow
, 或red
。API 将会等待直到集群达到指定的状态,然后才返回结果。wait_for_relocating_shards
(可选): 设置一个具体的数字,API 将会等待直到正在重定位的分片数量减少到指定的数量以下。wait_for_nodes
(可选): 指定一个表达式来定义需要等待的活跃节点数,比如> 2
表示至少有3个节点活跃。timeout
(可选): 如果指定了wait_for_*
参数,此参数定义了在放弃之前等待的时间长度,默认为30秒。
响应体
响应体通常包含以下字段:
cluster_name
: 集群的名字。status
: 集群的健康状态,可能的值为green
,yellow
, 和red
。green
表示所有主分片和副本分片都已成功分配;yellow
表示所有的主分片都已分配,但不是所有的副本分片都已分配;red
表示至少有一个主分片未被分配。timed_out
: 表示请求是否因为超时而终止。number_of_nodes
: 当前活跃的节点数量。number_of_data_nodes
: 当前活跃的数据节点数量。active_primary_shards
: 当前活跃的主分片数量。active_shards
: 当前活跃的所有分片(包括主分片和副本分片)的数量。relocating_shards
: 正在重定位的分片数量。initializing_shards
: 正在初始化的分片数量。unassigned_shards
: 未分配的分片数量。delayed_unassigned_shards
: 被延迟分配的分片数量。number_of_pending_tasks
: 集群中待处理的任务数量。number_of_in_flight_fetch
: 当前正在进行中的 fetch 请求数量。task_max_waiting_in_queue_millis
: 待处理任务在队列中等待的最长时间(毫秒)。active_shards_percent_as_number
: 活跃分片占总分片的比例,以百分比形式表示。
示例
这里是一个简单的示例,展示如何调用 _cluster/health
API 并获取响应:
curl -X GET "localhost:9200/_cluster/health?pretty"
这将返回集群的健康状态,格式化输出以便于阅读。
通过监控这些指标,你可以更好地理解和管理你的 Elasticsearch 集群,确保其稳定运行。