2018-08-13 16:15:15 -04:00
|
|
|
[[set-up-lifecycle-policy]]
|
|
|
|
== Set up {ilm} policy
|
|
|
|
|
2018-08-28 10:47:01 -04:00
|
|
|
In order for an index to use an {ilm} policy to manage its lifecycle we must
|
|
|
|
first define a lifecycle policy for it to use. The following request creates
|
|
|
|
a policy called `my_policy` in Elasticsearch which we can later use to manage
|
|
|
|
our indexes.
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
------------------------
|
|
|
|
PUT _ilm/my_policy
|
|
|
|
{
|
|
|
|
"policy": {
|
|
|
|
"phases": {
|
|
|
|
"hot": {
|
|
|
|
"actions": {
|
|
|
|
"rollover": {
|
|
|
|
"max_size": "25GB" <1>
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"delete": {
|
|
|
|
"after": "30d",
|
|
|
|
"actions": {
|
|
|
|
"delete": {} <2>
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
------------------------
|
|
|
|
// CONSOLE
|
|
|
|
<1> Rollover the index when it reaches 25GB in size
|
|
|
|
<2> Delete the index when its 30 days old
|
|
|
|
|
|
|
|
{ilm} will manage an index using the policy defined in the
|
|
|
|
`index.lifecycle.name` index setting. If this setting does not exist in the
|
|
|
|
settings for a particular index {ilm} will not manage that index.
|
|
|
|
|
|
|
|
To set the policy for an index there are two options:
|
|
|
|
1. Apply the policy to an index template and bootstrap creating the first index
|
|
|
|
2. Apply the policy to a new index in a create index request
|
|
|
|
|
|
|
|
=== Applying a policy to an index template
|
|
|
|
|
|
|
|
The `index.lifecycle.name` setting can be set in an index template so that it
|
|
|
|
is automatically applied to indexes matching the templates index pattern:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
-----------------------
|
|
|
|
PUT _template/my_template
|
|
|
|
{
|
|
|
|
"index_patterns": ["test-*"], <1>
|
|
|
|
"settings": {
|
|
|
|
"number_of_shards": 1,
|
|
|
|
"number_of_replicas": 1,
|
|
|
|
"index.lifecycle.name": "my_policy", <2>
|
|
|
|
"index.lifecycle.rollover_alias": "test-alias"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
-----------------------
|
|
|
|
// CONSOLE
|
|
|
|
<1> This template will be applied to all indexes which have a name starting
|
|
|
|
with `test-`
|
|
|
|
<2> The template will set the policy to be used to `my_policy`
|
|
|
|
|
|
|
|
Now that a policy exists and is used in an index template we can create an
|
|
|
|
initial index which will be managed by our policy:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
-----------------------
|
|
|
|
PUT test-000001
|
|
|
|
{
|
|
|
|
"aliases": {
|
|
|
|
"test-alias":{
|
|
|
|
"is_write_index": true <1>
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
-----------------------
|
|
|
|
// CONSOLE
|
|
|
|
<1> Set this initial index to be the write index for this alias.
|
|
|
|
|
|
|
|
We can now write data to the `test-alias` alias. Because we have a rollover
|
|
|
|
action defined in our policy when the index grows larger than 25GB {ilm} will
|
|
|
|
create a new index and roll the alias over to use the new index automatically.
|
|
|
|
|
|
|
|
=== Apply a policy to a create index request
|
|
|
|
|
|
|
|
The `index.lifecycle.name` setting can be set on an individual create index
|
|
|
|
request so {ilm} immediately starts managing the index:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
-----------------------
|
|
|
|
PUT test-index
|
|
|
|
{
|
|
|
|
"settings": {
|
|
|
|
"number_of_shards": 1,
|
|
|
|
"number_of_replicas": 1,
|
|
|
|
"index.lifecycle.name": "my_policy"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
-----------------------
|
|
|
|
// CONSOLE
|
|
|
|
|
|
|
|
NOTE: it is not recommended to set the policy on the index creation request if
|
|
|
|
you are using the rollover action as the indexes created by the rollover action
|
|
|
|
will not have the policy set. IF you are using the rollover action in your
|
|
|
|
policy its recommended to set the policy in an index template.
|
|
|
|
|