集群 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 的节点过滤器的示例。

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
# 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*