集群 API

编辑

节点规范

编辑

一些集群级别的 API 可能会在可以使用节点过滤器指定的节点子集上操作。例如,任务管理节点统计节点信息 API 都可以报告来自过滤节点集而不是来自所有节点的结果。

节点过滤器被编写为以逗号分隔的各个过滤器列表,每个过滤器都会从选定的子集中添加或删除节点。每个过滤器可以是以下之一:

  • _all,将所有节点添加到子集中。
  • _local,将本地节点添加到子集中。
  • _master,将当前选定的主节点添加到子集中。
  • 一个节点 ID 或名称,将此节点添加到子集中。
  • 一个 IP 地址或主机名,将所有匹配的节点添加到子集中。
  • 一个使用 * 通配符的模式,它将所有名称、地址或主机名与该模式匹配的节点添加到子集中。
  • master:truedata:trueingest:truevoting_only:trueml:truecoordinating_only:true,分别将所有符合主节点资格的节点、所有数据节点、所有摄取节点、所有仅投票节点、所有机器学习节点和所有仅协调节点添加到子集中。
  • master:falsedata:falseingest:falsevoting_only:falseml:falsecoordinating_only:false,分别从子集中删除所有符合主节点资格的节点、所有数据节点、所有摄取节点、所有仅投票节点、所有机器学习节点和所有仅协调节点。
  • 一对使用 * 通配符的模式,形式为 attrname:attrvalue,它将所有具有自定义节点属性(其名称和值与各自模式匹配)的节点添加到子集中。自定义节点属性通过在配置文件中设置 node.attr.attrname: attrvalue 形式的属性来配置。

节点过滤器按照给定的顺序运行,如果使用从集合中删除节点的过滤器,这一点非常重要。 例如,_all,master:false 表示除符合主节点资格的节点外的所有节点,但 master:false,_all_all 的含义相同,因为 _all 过滤器在 master:false 过滤器之后运行。

如果未给出过滤器,则默认选择所有节点。但是,如果给出了任何过滤器,则它们将从空的选定子集开始运行。这意味着,只有在其他过滤器之后使用时,从选定子集中删除节点的过滤器(如 master:false)才有用。单独使用时,master:false 不会选择任何节点。

以下是使用 节点信息 API 的一些节点过滤器使用示例。

resp = client.nodes.info()
print(resp)

resp1 = client.nodes.info(
    node_id="_all",
)
print(resp1)

resp2 = client.nodes.info(
    node_id="_local",
)
print(resp2)

resp3 = client.nodes.info(
    node_id="_master",
)
print(resp3)

resp4 = client.nodes.info(
    node_id="node_name_goes_here",
)
print(resp4)

resp5 = client.nodes.info(
    node_id="node_name_goes_*",
)
print(resp5)

resp6 = client.nodes.info(
    node_id="10.0.0.3,10.0.0.4",
)
print(resp6)

resp7 = client.nodes.info(
    node_id="10.0.0.*",
)
print(resp7)

resp8 = client.nodes.info(
    node_id="_all,master:false",
)
print(resp8)

resp9 = client.nodes.info(
    node_id="data:true,ingest:true",
)
print(resp9)

resp10 = client.nodes.info(
    node_id="coordinating_only:true",
)
print(resp10)

resp11 = client.nodes.info(
    node_id="master:true,voting_only:false",
)
print(resp11)

resp12 = client.nodes.info(
    node_id="rack:2",
)
print(resp12)

resp13 = client.nodes.info(
    node_id="ra*:2",
)
print(resp13)

resp14 = client.nodes.info(
    node_id="ra*:2*",
)
print(resp14)
response = client.nodes.info
puts response

response = client.nodes.info(
  node_id: '_all'
)
puts response

response = client.nodes.info(
  node_id: '_local'
)
puts response

response = client.nodes.info(
  node_id: '_master'
)
puts response

response = client.nodes.info(
  node_id: 'node_name_goes_here'
)
puts response

response = client.nodes.info(
  node_id: 'node_name_goes_*'
)
puts response

response = client.nodes.info(
  node_id: '10.0.0.3,10.0.0.4'
)
puts response

response = client.nodes.info(
  node_id: '10.0.0.*'
)
puts response

response = client.nodes.info(
  node_id: '_all,master:false'
)
puts response

response = client.nodes.info(
  node_id: 'data:true,ingest:true'
)
puts response

response = client.nodes.info(
  node_id: 'coordinating_only:true'
)
puts response

response = client.nodes.info(
  node_id: 'master:true,voting_only:false'
)
puts response

response = client.nodes.info(
  node_id: 'rack:2'
)
puts response

response = client.nodes.info(
  node_id: 'ra*:2'
)
puts response

response = client.nodes.info(
  node_id: 'ra*:2*'
)
puts response
const response = await client.nodes.info();
console.log(response);

const response1 = await client.nodes.info({
  node_id: "_all",
});
console.log(response1);

const response2 = await client.nodes.info({
  node_id: "_local",
});
console.log(response2);

const response3 = await client.nodes.info({
  node_id: "_master",
});
console.log(response3);

const response4 = await client.nodes.info({
  node_id: "node_name_goes_here",
});
console.log(response4);

const response5 = await client.nodes.info({
  node_id: "node_name_goes_*",
});
console.log(response5);

const response6 = await client.nodes.info({
  node_id: "10.0.0.3,10.0.0.4",
});
console.log(response6);

const response7 = await client.nodes.info({
  node_id: "10.0.0.*",
});
console.log(response7);

const response8 = await client.nodes.info({
  node_id: "_all,master:false",
});
console.log(response8);

const response9 = await client.nodes.info({
  node_id: "data:true,ingest:true",
});
console.log(response9);

const response10 = await client.nodes.info({
  node_id: "coordinating_only:true",
});
console.log(response10);

const response11 = await client.nodes.info({
  node_id: "master:true,voting_only:false",
});
console.log(response11);

const response12 = await client.nodes.info({
  node_id: "rack:2",
});
console.log(response12);

const response13 = await client.nodes.info({
  node_id: "ra*:2",
});
console.log(response13);

const response14 = await client.nodes.info({
  node_id: "ra*:2*",
});
console.log(response14);
# If no filters are given, the default is to select all nodes
GET /_nodes
# Explicitly select all nodes
GET /_nodes/_all
# Select just the local node
GET /_nodes/_local
# Select the elected master node
GET /_nodes/_master
# Select nodes by name, which can include wildcards
GET /_nodes/node_name_goes_here
GET /_nodes/node_name_goes_*
# Select nodes by address, which can include wildcards
GET /_nodes/10.0.0.3,10.0.0.4
GET /_nodes/10.0.0.*
# Select nodes by role
GET /_nodes/_all,master:false
GET /_nodes/data:true,ingest:true
GET /_nodes/coordinating_only:true
GET /_nodes/master:true,voting_only:false
# Select nodes by custom attribute (e.g. with something like `node.attr.rack: 2` in the configuration file)
GET /_nodes/rack:2
GET /_nodes/ra*:2
GET /_nodes/ra*:2*