I am trying the following request for ILM:
PUT _ilm/policy/test1
{
"policy": {
"phases": {
"hot": {
"min_age": "0ms",
"actions": {
"set_priority": {
"priority": 100
}
}
},
"warm": {
"min_age": "7d",
"actions": {
"allocate": {
"require": {
"box_type": "warm"
}
},
"set_priority": {
"priority": 50
}
}
},
"cold": {
"min_age": "45d",
"actions": {
"allocate": {
"require": {
"box_type": "warm"
}
},
"forcemerge": {
"max_num_segments": "1"
},
"freeze": {},
"set_priority": {
"priority": 0
}
}
},
"delete": {
"min_age": "90d",
"actions": {
"delete": {}
}
}
}
}
}
I am getting an error about forcemerge not being allowed in cold phase.
{
"error": {
"root_cause": [
{
"type": "x_content_parse_exception",
"reason": "Failed to build [lifecycle_policy] after last required field arrived"
}
],
"type": "x_content_parse_exception",
"reason": "[48:5] [put_lifecycle_request] failed to parse field [policy]",
"caused_by": {
"type": "x_content_parse_exception",
"reason": "[48:5] [lifecycle_policy] failed to parse field [phases]",
"caused_by": {
"type": "x_content_parse_exception",
"reason": "Failed to build [lifecycle_policy] after last required field arrived",
"caused_by": {
"type": "illegal_argument_exception",
"reason": "invalid action [forcemerge] defined in phase [cold]"
}
}
}
},
"status": 400
}
Why is the definition of actions in a phase restricted? How can I define custom phases?