[role="xpack"]
[[ilm-migrate-to-data-tiers]]
=== Migrate to data tiers routing API
++++
Migrate indices, ILM policies, and legacy, composable and component templates to data tiers routing
++++
.New API reference
[sidebar]
--
For the most up-to-date API details, refer to {api-es}/group/endpoint-ilm[{ilm-cap} APIs].
--
Switches the indices, ILM policies, and legacy, composable and component templates from using <> and
<> to using <>, and
optionally deletes one legacy index template.
Using node roles enables {ilm-init} to <> between
data tiers.
Migrating away from custom node attributes routing can be manually performed
as indicated in the <> page.
This API provides an automated way of executing three out of the four manual steps listed
in the <>:
. <>
. <>
. <> with the corresponding <>
[[ilm-migrate-to-data-tiers-request]]
==== {api-request-title}
`POST /_ilm/migrate_to_data_tiers`
The API accepts an optional body that allows you to specify:
- The legacy index template name to delete. Defaults to none.
- The name of the custom node attribute used for the indices and ILM policies allocation filtering.
Defaults to `data`.
[[ilm-migrate-to-data-tiers-prereqs]]
==== {api-prereq-title}
* {ilm-init} must be stopped before performing the migration. Use the <>
to stop {ilm-init} and <> to wait until the
reported operation mode is `STOPPED`.
[[ilm-migrate-to-data-tiers-query-params]]
==== {api-query-parms-title}
`dry_run`::
(Optional, Boolean)
If `true`, simulates the migration from node attributes based allocation filters to data tiers, but does
not perform the migration. This provides a way to retrieve the indices and ILM policies that need to be
migrated.
Defaults to `false`.
NOTE: When simulating a migration (ie. `dry_run` is `true`) {ilm-init} doesn't need to be stopped.
[[ilm-migrate-to-data-tiers-example]]
==== {api-examples-title}
The following example migrates the indices, ILM policies, legacy templates,
composable, and component templates away from defining custom allocation filtering
using the `custom_attribute_name` node attribute, and deletes the legacy template
with name `global-template` if it exists in the system.
////
[source,console]
----
POST _ilm/stop
PUT _template/global-template
{
"index_patterns": ["migrate-to-tiers-*"],
"settings": {
"index.routing.allocation.require.custom_attribute_name": "hot"
}
}
PUT _template/a-legacy-template
{
"index_patterns": ["legacy-template-migrate-to-tiers-*"],
"settings": {
"index.routing.allocation.require.custom_attribute_name": "hot"
}
}
PUT _index_template/a-composable-template
{
"index_patterns": [ "composable-template-migrate-to-tiers-*" ],
"data_stream": {},
"template" : {
"settings": {
"index.routing.allocation.require.custom_attribute_name": "hot"
}
}
}
PUT _component_template/a-component-template
{
"template" : {
"settings": {
"index.routing.allocation.require.custom_attribute_name": "hot"
}
}
}
PUT warm-index-to-migrate-000001
{
"settings": {
"index.routing.allocation.require.custom_attribute_name": "warm"
}
}
PUT _ilm/policy/policy_with_allocate_action
{
"policy": {
"phases": {
"warm": {
"actions": {
"allocate": {
"require": {
"custom_attribute_name": "warm"
}
}
}
},
"delete": {
"min_age": "30d",
"actions": {
"delete": {}
}
}
}
}
}
----
// TESTSETUP
[source,console]
----
DELETE warm-index-to-migrate-000001
DELETE _ilm/policy/policy_with_allocate_action
DELETE _template/a-legacy-template
DELETE _index_template/a-composable-template
DELETE _component_template/a-component-template
POST _ilm/start
----
// TEARDOWN
////
[source,console]
----------------------------------------------------------------
POST /_ilm/migrate_to_data_tiers
{
"legacy_template_to_delete": "global-template",
"node_attribute": "custom_attribute_name"
}
----------------------------------------------------------------
If the request succeeds, a response like the following will be received:
[source,console-result]
------------------------------------------------------------------------------
{
"dry_run": false,
"removed_legacy_template":"global-template", <1>
"migrated_ilm_policies":["policy_with_allocate_action"], <2>
"migrated_indices":["warm-index-to-migrate-000001"], <3>
"migrated_legacy_templates":["a-legacy-template"], <4>
"migrated_composable_templates":["a-composable-template"], <5>
"migrated_component_templates":["a-component-template"] <6>
}
------------------------------------------------------------------------------
<1> Shows the name of the legacy index template that was deleted. This will be missing
if no legacy index template was deleted.
<2> The ILM policies that were updated.
<3> The indices that were migrated to <> routing.
<4> The legacy index templates that were updated to not contain custom routing settings for the
provided data attribute.
<5> The composable index templates that were updated to not contain custom routing settings for the
provided data attribute.
<6> The component templates that were updated to not contain custom routing settings for the
provided data attribute.