创建或更新生命周期策略 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。也可以设置为 -1 以指示请求永远不应超时。

示例

编辑

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

resp = client.ilm.put_lifecycle(
    name="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": {}
                }
            }
        }
    },
)
print(resp)
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
const response = await client.ilm.putLifecycle({
  name: "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: {},
        },
      },
    },
  },
});
console.log(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
}