关闭 API

编辑

此功能旨在由 Elasticsearch ServiceElastic Cloud EnterpriseElastic Cloud on Kubernetes 间接使用。不支持直接使用。

准备关闭节点。

请求

编辑

PUT _nodes/<节点 ID>/shutdown

先决条件

编辑
  • 如果启用了 Elasticsearch 安全功能,您必须拥有 manage 集群权限才能使用此 API。
  • 如果启用了 操作员权限功能,您必须是操作员才能使用此 API。

描述

编辑

根据需要将正在进行的任务和索引分片迁移到其他节点,以准备重新启动或关闭节点并将其从集群中移除。这确保了 Elasticsearch 可以安全停止,同时对集群的干扰最小。

您必须指定关闭类型:restartremovereplace。如果某个节点正在准备关闭,您可以使用此 API 更改关闭类型。

此 API 不会 终止 Elasticsearch 进程。请监控节点关闭状态,以确定何时可以安全停止 Elasticsearch。

路径参数

编辑
<节点 ID>
(必需,字符串)您要准备关闭的节点的 ID。如果您指定一个离线的节点,它将在重新加入集群时准备关闭。

此参数 不会 针对集群的活动节点进行验证。这使您可以在节点离线时注册该节点以进行关闭。如果指定无效的节点 ID,则不会引发错误。

查询参数

编辑
master_timeout
(可选,时间单位)等待主节点的时间段。如果主节点在超时到期之前不可用,则请求失败并返回错误。默认为 30s。也可以设置为 -1,表示请求永远不应超时。

请求主体

编辑
type
(必需,字符串)有效值是 restartremovereplace。当您需要临时关闭节点以执行升级、进行配置更改或执行其他维护时,请使用 restart。由于节点预计会重新加入集群,因此数据不会从节点迁移出去。当您需要从集群中永久移除节点时,请使用 remove。在数据从节点迁移出去之前,该节点不会被标记为准备好关闭。使用 replace 对节点进行 1:1 的替换。出于真实替换源节点和目标节点的考虑,某些分配决策将被忽略(例如磁盘水位线)。在 replace 类型的关闭期间,滚动更新和索引创建可能会导致未分配的分片,并且在替换完成之前,收缩可能会失败。
reason
(必需,字符串)节点被关闭的原因,以人类可读的形式呈现。此字段为其他集群操作员提供信息;它不会影响关闭过程。
allocation_delay
(可选,字符串)仅当 typerestart 时有效。控制 Elasticsearch 在重新分配其分片到其他节点之前,等待节点重新启动并加入集群的时间。这与使用 index.unassigned.node_left.delayed_timeout 设置延迟分配的工作方式相同。如果您同时指定了重新启动分配延迟和索引级别的分配延迟,则使用两者中较长的延迟。
target_node_name
(可选,字符串)仅当 typereplace 时有效。指定正在替换被关闭节点的节点的名称。来自被关闭节点的分片仅允许分配给目标节点,并且不会将其他数据分配给目标节点。在数据重新定位期间,某些分配规则将被忽略,例如磁盘水位线或用户属性过滤规则。

示例

编辑

注册节点以进行关闭

resp = client.shutdown.put_node(
    node_id="USpTGYaBSIKbgSUJR2Z9lg",
    type="restart",
    reason="Demonstrating how the node shutdown API works",
    allocation_delay="20m",
)
print(resp)
response = client.shutdown.put_node(
  node_id: 'USpTGYaBSIKbgSUJR2Z9lg',
  body: {
    type: 'restart',
    reason: 'Demonstrating how the node shutdown API works',
    allocation_delay: '20m'
  }
)
puts response
const response = await client.shutdown.putNode({
  node_id: "USpTGYaBSIKbgSUJR2Z9lg",
  type: "restart",
  reason: "Demonstrating how the node shutdown API works",
  allocation_delay: "20m",
});
console.log(response);
PUT /_nodes/USpTGYaBSIKbgSUJR2Z9lg/shutdown
{
  "type": "restart", 
  "reason": "Demonstrating how the node shutdown API works",
  "allocation_delay": "20m"
}

准备重新启动节点。对于将从集群中永久移除的节点,请使用 remove