Migrate
editMigrate
editPhases allowed: warm, cold.
Moves the index to the data tier that corresponds
to the current phase by updating the index.routing.allocation.include._tier_preference
index setting.
ILM automatically injects the migrate action in the warm and cold
phases. To prevent automatic migration, you
can explicitly include the migrate action and set the enabled option to
false
.
If the cold
phase defines a searchable snapshot action the migrate
action will not be injected automatically in the cold
phase because the managed index will be
mounted directly on the target tier using the same _tier_preference
infrastructure the migrate
actions configures.
In the warm phase, the migrate
action sets index.routing.allocation.include._tier_preference
to data_warm,data_hot
. This moves the index to nodes in the
warm tier. If there are no nodes in the warm tier, it falls back to the
hot tier.
In the cold phase, the migrate
action sets
index.routing.allocation.include._tier_preference
to data_cold,data_warm,data_hot
. This moves the index to nodes in the
cold tier. If there are no nodes in the cold tier, it falls back to the
warm tier, or the hot tier if there are no warm nodes available.
The migrate action is not allowed in the frozen phase. The frozen phase directly
mounts the searchable snapshot using a
index.routing.allocation.include._tier_preference
of data_frozen
. This moves the index to nodes in the
frozen tier.
The migrate action is not allowed in the hot phase. The initial index allocation is performed automatically, and can be configured manually or via index templates.
Options
edit-
enabled
-
(Optional, Boolean)
Controls whether ILM automatically migrates the index during this phase.
Defaults to
true
.
Example
editIn the following policy, the allocate action is specified to reduce the number of replicas before ILM migrates the index to warm nodes.
Explicitly specifying the migrate action is not required—ILM automatically performs the migrate action unless you disable migration.
resp = client.ilm.put_lifecycle( name="my_policy", policy={ "phases": { "warm": { "actions": { "migrate": {}, "allocate": { "number_of_replicas": 1 } } } } }, ) print(resp)
response = client.ilm.put_lifecycle( policy: 'my_policy', body: { policy: { phases: { warm: { actions: { migrate: {}, allocate: { number_of_replicas: 1 } } } } } } ) puts response
const response = await client.ilm.putLifecycle({ name: "my_policy", policy: { phases: { warm: { actions: { migrate: {}, allocate: { number_of_replicas: 1, }, }, }, }, }, }); console.log(response);
PUT _ilm/policy/my_policy { "policy": { "phases": { "warm": { "actions": { "migrate" : { }, "allocate": { "number_of_replicas": 1 } } } } } }
Disable automatic migration
editThe migrate action in the following policy is disabled and
the allocate action assigns the index to nodes that have a
rack_id
of one or two.
resp = client.ilm.put_lifecycle( name="my_policy", policy={ "phases": { "warm": { "actions": { "migrate": { "enabled": False }, "allocate": { "include": { "rack_id": "one,two" } } } } } }, ) print(resp)
response = client.ilm.put_lifecycle( policy: 'my_policy', body: { policy: { phases: { warm: { actions: { migrate: { enabled: false }, allocate: { include: { rack_id: 'one,two' } } } } } } } ) puts response
const response = await client.ilm.putLifecycle({ name: "my_policy", policy: { phases: { warm: { actions: { migrate: { enabled: false, }, allocate: { include: { rack_id: "one,two", }, }, }, }, }, }, }); console.log(response);
PUT _ilm/policy/my_policy { "policy": { "phases": { "warm": { "actions": { "migrate" : { "enabled": false }, "allocate": { "include" : { "rack_id": "one,two" } } } } } } }