migrate-to-data-tiers.asciidoc 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. [role="xpack"]
  2. [[ilm-migrate-to-data-tiers]]
  3. === Migrate to data tiers routing API
  4. ++++
  5. <titleabbrev>Migrate indices and ILM policies to data tiers routing</titleabbrev>
  6. ++++
  7. Switches the indices and ILM policies from using custom node attributes and
  8. <<shard-allocation-filtering, attribute-based allocation filters>> to using <<data-tiers, data tiers>>, and
  9. optionally deletes one legacy index template.
  10. Using node roles enables {ilm-init} to <<data-tier-migration, automatically move the indices>> between
  11. data tiers.
  12. Migrating away from custom node attributes routing can be manually performed
  13. as indicated in the <<migrate-index-allocation-filters, Migrate index allocation
  14. filters to node roles>> page.
  15. This API provides an automated way of executing three out of the four manual steps listed
  16. in the <<data-tier-migration, migration guide>>:
  17. . <<stop-setting-custom-hot-attribute, Stop setting the custom hot attribute on new indices>>
  18. . <<remove-custom-allocation-settings, Remove custom allocation settings from existing {ilm-init} policies>>
  19. . <<set-tier-preference, Replace custom allocation settings from existing indices>> with the corresponding <<data-tier-shard-filtering,tier preference>>
  20. [[ilm-migrate-to-data-tiers-request]]
  21. ==== {api-request-title}
  22. `POST /_ilm/migrate_to_data_tiers`
  23. The API accepts an optional body that allows you to specify:
  24. - The legacy index template name to delete. Defaults to none.
  25. - The name of the custom node attribute used for the indices and ILM policies allocation filtering.
  26. Defaults to `data`.
  27. [[ilm-migrate-to-data-tiers-prereqs]]
  28. ==== {api-prereq-title}
  29. * {ilm-init} must be stopped before performing the migration. Use the <<ilm-stop-request, stop ILM API>>
  30. to stop {ilm-init} and <<ilm-get-status-request, get status API>> to wait until the
  31. reported operation mode is `STOPPED`.
  32. [[ilm-migrate-to-data-tiers-query-params]]
  33. ==== {api-query-parms-title}
  34. `dry_run`::
  35. (Optional, Boolean)
  36. If `true`, simulates the migration from node attributes based allocation filters to data tiers, but does
  37. not perform the migration. This provides a way to retrieve the indices and ILM policies that need to be
  38. migrated.
  39. Defaults to `false`.
  40. [[ilm-migrate-to-data-tiers-example]]
  41. ==== {api-examples-title}
  42. The following example migrates the indices and ILM policies away from defining
  43. custom allocation filtering using the `custom_attribute_name` node attribute, and
  44. deletes legacy template with name `global-template` if it exists in the system.
  45. ////
  46. [source,console]
  47. ----
  48. POST _ilm/stop
  49. PUT _template/global-template
  50. {
  51. "index_patterns": ["migrate-to-tiers-*"],
  52. "settings": {
  53. "index.routing.allocation.require.custom_attribute_name": "hot"
  54. }
  55. }
  56. PUT warm-index-to-migrate-000001
  57. {
  58. "settings": {
  59. "index.routing.allocation.require.custom_attribute_name": "warm"
  60. }
  61. }
  62. PUT _ilm/policy/policy_with_allocate_action
  63. {
  64. "policy": {
  65. "phases": {
  66. "warm": {
  67. "actions": {
  68. "allocate": {
  69. "require": {
  70. "custom_attribute_name": "warm"
  71. }
  72. }
  73. }
  74. },
  75. "delete": {
  76. "min_age": "30d",
  77. "actions": {
  78. "delete": {}
  79. }
  80. }
  81. }
  82. }
  83. }
  84. ----
  85. // TESTSETUP
  86. [source,console]
  87. ----
  88. DELETE warm-index-to-migrate-000001
  89. DELETE _ilm/policy/policy_with_allocate_action
  90. POST _ilm/start
  91. ----
  92. // TEARDOWN
  93. ////
  94. [source,console]
  95. ----------------------------------------------------------------
  96. POST /_ilm/migrate_to_data_tiers
  97. {
  98. "legacy_template_to_delete": "global-template",
  99. "node_attribute": "custom_attribute_name"
  100. }
  101. ----------------------------------------------------------------
  102. If the request succeeds, a response like the following will be received:
  103. [source,console-result]
  104. ------------------------------------------------------------------------------
  105. {
  106. "dry_run": false,
  107. "removed_legacy_template":"global-template", <1>
  108. "migrated_ilm_policies":["policy_with_allocate_action"], <2>
  109. "migrated_indices":["warm-index-to-migrate-000001"] <3>
  110. }
  111. ------------------------------------------------------------------------------
  112. <1> Shows the name of the legacy index template that was deleted. This will be missing
  113. if no legacy index template was deleted.
  114. <2> The ILM policies that were updated.
  115. <3> The indices that were migrated to <<data-tier-shard-filtering,tier preference>> routing.