集群运行状况 API
编辑集群运行状况 API编辑
返回集群的运行状况状态。
请求编辑
GET /_cluster/health/<target>
描述编辑
集群运行状况 API 返回集群运行状况的简单状态。您还可以使用该 API 获取仅指定数据流和索引的运行状况状态。对于数据流,API 检索流的后台索引的运行状况状态。
集群运行状况状态为:green
、yellow
或 red
。在分片级别,red
状态表示特定分片未分配到集群中,yellow
表示已分配主分片但未分配副本,green
表示已分配所有分片。索引级别状态由最差分片状态控制。集群状态由最差索引状态控制。
该 API 的主要优点之一是能够等到集群达到某个高水位运行状况级别。例如,以下代码将等待 50 秒,直到集群达到 yellow
级别(如果它在 50 秒内达到 green
或 yellow
状态,它将返回该点)
$response = $client->cluster()->health();
resp = client.cluster.health( wait_for_status="yellow", timeout="50s", ) print(resp)
response = client.cluster.health( wait_for_status: 'yellow', timeout: '50s' ) puts response
res, err := es.Cluster.Health( es.Cluster.Health.WithTimeout(time.Duration(50000000000)), es.Cluster.Health.WithWaitForStatus("yellow"), ) fmt.Println(res, err)
const response = await client.cluster.health({ wait_for_status: 'yellow', timeout: '50s' }) console.log(response)
GET /_cluster/health?wait_for_status=yellow&timeout=50s
路径参数编辑
-
<target>
-
(可选,字符串)用于限制请求的数据流、索引和索引别名的逗号分隔列表。支持通配符表达式 (
*
)。要定位集群中的所有数据流和索引,请省略此参数或使用
_all
或*
。
查询参数编辑
-
level
- (可选,字符串)可以是
cluster
、indices
或shards
之一。控制返回的运行状况信息的详细级别。默认为cluster
。 -
local
- (可选,布尔值)如果为
true
,则请求仅从本地节点检索信息。默认为false
,这意味着从主节点检索信息。 -
master_timeout
- (可选,时间单位)等待主节点的时间段。如果在超时到期之前主节点不可用,则请求失败并返回错误。默认为
30s
。也可以设置为-1
以指示请求永远不会超时。 -
timeout
- (可选,时间单位)等待响应的时间段。如果在超时到期之前未收到响应,则请求失败并返回错误。默认为
30s
。 -
wait_for_active_shards
- (可选,字符串)一个数字,控制要等待多少个活动分片,
all
等待集群中的所有分片都处于活动状态,或0
表示不等待。默认为0
。 -
wait_for_events
- (可选,字符串)可以是
immediate
、urgent
、high
、normal
、low
、languid
之一。等到所有当前排队的具有给定优先级的事件都被处理。 -
wait_for_no_initializing_shards
- (可选,布尔值)一个布尔值,控制是否等待(直到提供的超时)集群没有分片初始化。默认为 false,这意味着它不会等待初始化分片。
-
wait_for_no_relocating_shards
- (可选,布尔值)一个布尔值,控制是否等待(直到提供的超时)集群没有分片迁移。默认为 false,这意味着它不会等待迁移分片。
-
wait_for_nodes
- (可选,字符串)请求等待,直到指定数量的节点
N
可用。它也接受>=N
、<=N
、>N
和<N
。或者,可以使用ge(N)
、le(N)
、gt(N)
和lt(N)
表示法。 -
wait_for_status
- (可选,字符串)
green
、yellow
或red
之一。将等待(直到提供的超时),直到集群的状态更改为提供的状态或更好状态,即green
>yellow
>red
。默认情况下,不会等待任何状态。
响应正文编辑
-
cluster_name
- (字符串)集群的名称。
-
status
-
(字符串)集群的运行状况状态,基于其主分片和副本分片的状体。状态为
-
green
:所有分片均已分配。 -
yellow
:所有主分片均已分配,但一个或多个副本分片未分配。如果集群中的节点发生故障,则在修复该节点之前,某些数据可能不可用。 -
red
:一个或多个主分片未分配,因此某些数据不可用。在集群启动期间,当分配主分片时,可能会短暂出现这种情况。
-
-
timed_out
- (布尔值)如果为
false
,则在timeout
参数(默认为30s
)指定的时间段内返回响应。 -
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
- (整数)未完成的获取的数量。
-
task_max_waiting_in_queue_millis
- (整数)以毫秒表示的时间,自最早启动的任务等待执行以来。
-
active_shards_percent_as_number
- (浮点数)集群中活动分片的比率,以百分比表示。
示例编辑
$response = $client->cluster()->health();
resp = client.cluster.health() print(resp)
response = client.cluster.health puts response
res, err := es.Cluster.Health() fmt.Println(res, err)
const response = await client.cluster.health() console.log(response)
GET _cluster/health
对于具有一个分片和一个副本的单个索引的静默单节点集群,API 返回以下响应
{ "cluster_name" : "testcluster", "status" : "yellow", "timed_out" : false, "number_of_nodes" : 1, "number_of_data_nodes" : 1, "active_primary_shards" : 1, "active_shards" : 1, "relocating_shards" : 0, "initializing_shards" : 0, "unassigned_shards" : 1, "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": 50.0 }
以下是在 shards
级别获取集群运行状况的示例
resp = client.cluster.health( index="my-index-000001", level="shards", ) print(resp)
response = client.cluster.health( index: 'my-index-000001', level: 'shards' ) puts response
GET /_cluster/health/my-index-000001?level=shards