集群状态 API
编辑集群状态 API
编辑返回集群状态的内部表示,用于调试或诊断目的。
请求
编辑GET /_cluster/state/<metrics>/<target>
描述
编辑集群状态是一个内部数据结构,它跟踪每个节点所需的各种信息,包括:
- 集群中其他节点的身份和属性
- 集群范围内的设置
- 索引元数据,包括每个索引的映射和设置
- 集群中每个分片副本的位置和状态
选定的主节点确保集群中的每个节点都有相同集群状态的副本。集群状态 API 允许您检索此内部状态的表示形式,以进行调试或诊断。您可能需要参考 Elasticsearch 源代码来确定响应的确切含义。
默认情况下,集群状态 API 会将请求路由到选定的主节点,因为该节点是集群状态的权威来源。您还可以通过添加查询参数 ?local=true
来检索处理 API 请求的节点上保留的集群状态。
Elasticsearch 可能需要花费大量精力来计算大型集群对此 API 的响应,并且响应可能包含大量数据。如果您重复使用此 API,您的集群可能会变得不稳定。
响应是内部数据结构的表示。它的格式不受与其他更稳定的 API 相同的兼容性保证的约束,并且可能会因版本而异。 请勿使用外部监视工具查询此 API。 请改为使用其他更稳定的 集群 API 获取您需要的信息。
路径参数
编辑集群状态有时可能非常大,并且 Elasticsearch 在计算此 API 的响应时可能会消耗大量资源。要减小响应的大小,您可以仅请求您感兴趣的集群状态部分
-
<metrics>
-
(可选,字符串)以下选项的逗号分隔列表
-
_all
- 显示所有指标。
-
blocks
- 显示响应的
blocks
部分。 -
master_node
- 显示响应的
master_node
部分。 -
metadata
- 显示响应的
metadata
部分。如果您提供索引的逗号分隔列表,则返回的输出将仅包含这些索引的元数据。 -
nodes
- 显示响应的
nodes
部分。 -
routing_nodes
- 显示响应的
routing_nodes
部分。 -
routing_table
- 显示响应的
routing_table
部分。如果您提供索引的逗号分隔列表,则返回的输出将仅包含这些索引的路由表。 -
version
- 显示集群状态版本。
-
-
<target>
- (可选,字符串)用于限制请求的数据流、索引和别名的逗号分隔列表。支持通配符 (
*
)。要定位所有数据流和索引,请省略此参数或使用*
或_all
。
查询参数
编辑-
allow_no_indices
-
(可选,布尔值)如果为
true
,则将忽略解析为没有具体索引的通配符索引表达式。(包括_all
字符串或未指定索引时)。默认为
true
。 -
expand_wildcards
- (可选,字符串)是否将通配符表达式展开为打开、关闭或两者兼有的具体索引。可用选项:
open
、closed
、none
、all
。 -
flat_settings
- (可选,布尔值)如果为
true
,则以扁平格式返回设置。默认为false
。 -
ignore_unavailable
- (可选,布尔值)如果为
true
,则会忽略不可用的索引(丢失或关闭)。 -
local
- (可选,布尔值)如果为
true
,则请求仅从本地节点检索信息。默认为false
,这意味着从主节点检索信息。 -
master_timeout
- (可选,时间单位)等待主节点的时间。如果在超时到期之前主节点不可用,则请求失败并返回错误。默认为
30s
。也可以设置为-1
,表示请求永远不应超时。 -
wait_for_metadata_version
- (可选,整数)等待元数据版本等于或大于指定的元数据版本。
-
wait_for_timeout
- (可选,时间单位)指定在超时之前等待 wait_for_metadata_version 的最长时间。
示例
编辑以下示例仅返回 foo
和 bar
数据流或索引的 metadata
和 routing_table
数据
resp = client.cluster.state( metric="metadata,routing_table", index="foo,bar", ) print(resp)
response = client.cluster.state( metric: 'metadata,routing_table', index: 'foo,bar' ) puts response
const response = await client.cluster.state({ metric: "metadata,routing_table", index: "foo,bar", }); console.log(response);
GET /_cluster/state/metadata,routing_table/foo,bar
下一个示例返回 foo
和 bar
的所有可用元数据
resp = client.cluster.state( metric="_all", index="foo,bar", ) print(resp)
response = client.cluster.state( metric: '_all', index: 'foo,bar' ) puts response
const response = await client.cluster.state({ metric: "_all", index: "foo,bar", }); console.log(response);
GET /_cluster/state/_all/foo,bar
此示例仅返回 blocks
元数据
resp = client.cluster.state( metric="blocks", ) print(resp)
response = client.cluster.state( metric: 'blocks' ) puts response
const response = await client.cluster.state({ metric: "blocks", }); console.log(response);
GET /_cluster/state/blocks