创建或更新生命周期策略 API编辑

创建或更新生命周期策略。有关策略组件的定义,请参见 索引生命周期

请求编辑

PUT _ilm/policy/<policy_id>

先决条件编辑

  • 如果启用了 Elasticsearch 安全功能,则必须具有 manage_ilm 集群权限才能使用此 API。您还必须对由 policy 管理的所有索引具有 manage 索引权限。ILM 以最后更新策略的用户身份执行操作。ILM 仅具有在上次策略更新时分配给用户的 角色

描述编辑

创建生命周期策略。如果指定的策略存在,则替换策略并增加策略版本。

仅存储策略的最新版本,您无法恢复到以前的版本。

路径参数编辑

<policy_id>

(必需,字符串) 策略的标识符。

为了避免与内置和 Fleet 管理的 ILM 策略发生命名冲突,请避免在您自己的 ILM 策略的 ID 中使用 @

查询参数编辑

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

示例编辑

以下示例创建了一个名为 my_policy 的新策略。此外,您可以使用 _meta 参数向策略添加任意元数据,_meta 参数是可选的,并且不会由 Elasticsearch 自动生成或使用。要取消设置 _meta,请在不指定的情况下替换策略。要检查 _meta,您可以使用 获取生命周期策略 API。

response = client.ilm.put_lifecycle(
  policy: 'my_policy',
  body: {
    policy: {
      _meta: {
        description: 'used for nginx log',
        project: {
          name: 'myProject',
          department: 'myDepartment'
        }
      },
      phases: {
        warm: {
          min_age: '10d',
          actions: {
            forcemerge: {
              max_num_segments: 1
            }
          }
        },
        delete: {
          min_age: '30d',
          actions: {
            delete: {}
          }
        }
      }
    }
  }
)
puts response
PUT _ilm/policy/my_policy
{
  "policy": {
    "_meta": {
      "description": "used for nginx log",
      "project": {
        "name": "myProject",
        "department": "myDepartment"
      }
    },
    "phases": {
      "warm": {
        "min_age": "10d",
        "actions": {
          "forcemerge": {
            "max_num_segments": 1
          }
        }
      },
      "delete": {
        "min_age": "30d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

如果请求成功,您将收到以下结果

{
  "acknowledged": true
}