创建或更新快照生命周期策略 API

编辑

创建或更新快照生命周期策略 API

编辑

创建或更新快照生命周期策略。

请求

编辑

PUT /_slm/policy/<snapshot-lifecycle-policy-id>

先决条件

编辑

如果启用了 Elasticsearch 安全功能,您必须拥有 manage_slm 集群权限和任何包含索引的 manage 索引权限才能使用此 API。有关更多信息,请参阅安全权限

描述

编辑

使用创建或更新快照生命周期策略 API 来创建或更新快照生命周期策略。

如果策略已存在,此请求会增加策略的版本。只会存储策略的最新版本。

路径参数

编辑
<snapshot-lifecycle-policy-id>
(必需,字符串)要创建或更新的快照生命周期策略的 ID。

查询参数

编辑
master_timeout
(可选,时间单位)等待主节点的期限。如果主节点在超时过期之前不可用,则请求将失败并返回错误。默认为 30s。也可以设置为 -1,表示请求永远不应超时。
timeout
(可选,时间单位)在更新集群元数据后,等待来自集群中所有相关节点的响应的期限。如果在超时过期之前未收到响应,则集群元数据更新仍然适用,但响应将指示它未被完全确认。默认为 30s。也可以设置为 -1,表示请求永远不应超时。

请求体

编辑
config

(必需,对象)策略创建的每个快照的配置。

config 的属性
expand_wildcards

(可选,字符串)确定 indices 参数中的通配符模式如何匹配数据流和索引。支持逗号分隔的值,例如 open,hidden。默认为 all。有效值为

all
匹配任何数据流或索引,包括关闭的和隐藏的
open
匹配打开的索引和数据流。
closed
匹配关闭的索引和数据流。
hidden
匹配隐藏的数据流和索引。必须与 openclosed 或两者组合使用。
none
不展开通配符模式。
ignore_unavailable
(可选,布尔值)如果为 false,则如果 indices 中的任何数据流或索引丢失,快照将失败。如果为 true,则快照将忽略丢失的数据流和索引。默认为 false
include_global_state

(可选,布尔值)如果为 true,则在快照中包含集群状态。默认为 true。集群状态包括

indices

(可选,字符串或字符串数组)要包含在快照中的数据流和索引的逗号分隔列表。支持多目标语法。默认为空数组([]),其中包括所有常规数据流和常规索引。要排除所有数据流和索引,请使用 -*

您不能使用此参数在快照中包含或排除系统索引或系统数据流。请改用feature_states

feature_states

(可选,字符串数组)要包含在快照中的特性状态。要获取可能的值及其描述的列表,请使用获取特性 API

如果 include_global_statetrue,则快照默认包含所有特性状态。如果 include_global_statefalse,则快照默认不包含任何特性状态。

请注意,指定空数组将导致默认行为。要排除所有特性状态,无论 include_global_state 值如何,请指定一个仅包含值 none 的数组(["none"])。

metadata
(可选,对象)将任意元数据附加到快照,例如拍摄快照的人员记录、拍摄原因或任何其他有用的数据。元数据必须小于 1024 字节。
partial

(可选,布尔值)如果为 false,如果快照中包含的一个或多个索引没有所有可用的主分片,则整个快照将失败。默认为 false

如果为 true,则允许对具有不可用分片的索引进行部分快照。

name
(必需,字符串)策略创建的每个快照自动分配的名称。支持日期数学。为防止快照名称冲突,每个快照名称都会自动附加一个 UUID。
repository
(必需,字符串)用于存储此策略创建的快照的存储库。此存储库必须在策略创建之前存在。您可以使用快照存储库 API 创建存储库。
retention

(可选,对象)用于保留和删除策略创建的快照的保留规则。

retention 的属性
expire_after
(可选,时间单位)快照被视为过期并有资格删除的时间段。SLM 根据slm.retention_schedule 删除过期的快照。
max_count
(可选,整数)要保留的最大快照数,即使快照尚未过期。如果存储库中的快照数量超过此限制,则该策略将保留最新的快照并删除较旧的快照。此限制仅包括 stateSUCCESS 的快照。
min_count
(可选,整数)要保留的最小快照数,即使快照已过期。
schedule
(必需,Cron 语法时间单位)策略创建快照的周期性或绝对计划。SLM 立即应用 schedule 更改。计划可以是 Cron 计划,也可以是描述快照之间间隔的时间单位。使用时间单位间隔时,第一个快照计划在策略修改时间之后的一个间隔处,然后再次在每个间隔之后。

示例

编辑

创建策略

编辑

创建 daily-snapshots 生命周期策略

resp = client.slm.put_lifecycle(
    policy_id="daily-snapshots",
    schedule="0 30 1 * * ?",
    name="<daily-snap-{now/d}>",
    repository="my_repository",
    config={
        "indices": [
            "data-*",
            "important"
        ],
        "ignore_unavailable": False,
        "include_global_state": False
    },
    retention={
        "expire_after": "30d",
        "min_count": 5,
        "max_count": 50
    },
)
print(resp)
const response = await client.slm.putLifecycle({
  policy_id: "daily-snapshots",
  schedule: "0 30 1 * * ?",
  name: "<daily-snap-{now/d}>",
  repository: "my_repository",
  config: {
    indices: ["data-*", "important"],
    ignore_unavailable: false,
    include_global_state: false,
  },
  retention: {
    expire_after: "30d",
    min_count: 5,
    max_count: 50,
  },
});
console.log(response);
PUT /_slm/policy/daily-snapshots
{
  "schedule": "0 30 1 * * ?", 
  "name": "<daily-snap-{now/d}>", 
  "repository": "my_repository", 
  "config": { 
    "indices": ["data-*", "important"], 
    "ignore_unavailable": false,
    "include_global_state": false
  },
  "retention": { 
    "expire_after": "30d", 
    "min_count": 5, 
    "max_count": 50 
  }
}

应拍摄快照的时间,在本例中为每天凌晨 1:30

应为每个快照指定的名称

在其中拍摄快照的存储库

任何额外的快照配置

快照应包含的数据流和索引

可选的保留配置

将快照保留 30 天

始终保留至少 5 个成功的快照,即使它们超过 30 天

最多保留 50 个成功的快照,即使它们不到 30 天

使用间隔计划

编辑

使用间隔计划创建 hourly-snapshots 生命周期策略

resp = client.slm.put_lifecycle(
    policy_id="hourly-snapshots",
    schedule="1h",
    name="<hourly-snap-{now/d}>",
    repository="my_repository",
    config={
        "indices": [
            "data-*",
            "important"
        ]
    },
)
print(resp)
const response = await client.slm.putLifecycle({
  policy_id: "hourly-snapshots",
  schedule: "1h",
  name: "<hourly-snap-{now/d}>",
  repository: "my_repository",
  config: {
    indices: ["data-*", "important"],
  },
});
console.log(response);
PUT /_slm/policy/hourly-snapshots
{
  "schedule": "1h",
  "name": "<hourly-snap-{now/d}>",
  "repository": "my_repository",
  "config": {
    "indices": ["data-*", "important"]
  }
}

每小时创建一个快照。第一个快照将在策略修改后一小时创建,随后的快照将在之后每小时创建一次。