| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | [role="xpack"][testenv="basic"][[ilm-put-lifecycle]]=== Create or update lifecycle policy API++++<titleabbrev>Create or update lifecycle policy</titleabbrev>++++Creates or updates lifecycle policy. See <<ilm-policy-definition>> fordefinitions of policy components.[[ilm-put-lifecycle-request]]==== {api-request-title}`PUT _ilm/policy/<policy_id>`[[ilm-put-lifecycle-prereqs]]==== {api-prereq-title}* If the {es} {security-features} are enabled, you must have the `manage_ilm`cluster privilege to use this API. You must also have the `manage` indexprivilege on all indices being managed by `policy`. {ilm-init} performsoperations as the user who last updated the policy. {ilm-init} only has the<<defining-roles,roles>> assigned to the user at the time of the last policyupdate.[[ilm-put-lifecycle-desc]]==== {api-description-title}Creates a lifecycle policy. If the specified policy exists, the policy isreplaced and the policy version is incremented.NOTE: Only the latest version of the policy is stored, you cannot revert toprevious versions.[[ilm-put-lifecycle-path-params]]==== {api-path-parms-title}`<policy_id>`::  (Required, string) Identifier for the policy.[[ilm-put-lifecycle-query-params]]==== {api-query-parms-title}include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=timeoutparms][[ilm-put-lifecycle-example]]==== {api-examples-title}The following example creates a new policy named `my_policy`. In addition, you can use the`_meta` parameter to add arbitrary metadata to the policy, the `_meta` parameter is optionaland not automatically generated or used by Elasticsearch. To unset `_meta`, replace the policywithout specifying one. To check the `_meta`, you can use the <<ilm-get-lifecycle,Get lifecycle policy>> API.[source,console]--------------------------------------------------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": {}        }      }    }  }}--------------------------------------------------If the request succeeds, you receive the following result:[source,console-result]----{  "acknowledged": true}----
 |