Migrate

許可されるフェーズ: ウォーム、コールド。

インデックスを現在のフェーズに対応するdata tierに移動させるために、index.routing.allocation.include._tier_preferenceインデックス設定を更新します。ILMは自動的にウォームおよびコールドフェーズでマイグレートアクションを挿入します。自動マイグレーションを防ぐには、明示的にマイグレートアクションを含め、enabledオプションをfalseに設定できます。

もしcoldフェーズがsearchable snapshot actionを定義している場合、migrateアクションはcoldフェーズで自動的に挿入されません。なぜなら、管理されたインデックスは、migrateアクションが構成するのと同じ_tier_preferenceインフラストラクチャを使用して、ターゲットティアに直接マウントされるからです。

ウォームフェーズでは、migrateアクションがindex.routing.allocation.include._tier_preferencedata_warm,data_hotに設定します。これにより、インデックスはウォームティアのノードに移動します。ウォームティアにノードがない場合は、ホットティアにフォールバックします。

コールドフェーズでは、migrateアクションがindex.routing.allocation.include._tier_preferencedata_cold,data_warm,data_hotに設定します。これにより、インデックスはコールドティアのノードに移動します。コールドティアにノードがない場合は、ウォームティアにフォールバックし、ウォームノードが利用できない場合はホットティアにフォールバックします。

マイグレートアクションは、フローズンフェーズでは許可されていません。フローズンフェーズは、index.routing.allocation.include._tier_preferencedata_frozenを使用して、直接検索可能なスナップショットをマウントします。これにより、インデックスはフローズンティアのノードに移動します。

マイグレートアクションは、ホットフェーズでは許可されていません。初期インデックスの割り当ては自動的に行われ、手動またはindex templatesを介して構成できます。

Options

  • enabled
  • (オプション、ブール値) このフェーズ中にILMがインデックスを自動的にマイグレートするかどうかを制御します。デフォルトはtrueです。

Example

次のポリシーでは、allocateアクションが指定されており、ILMがインデックスをウォームノードにマイグレートする前にレプリカの数を減らします。

マイグレートアクションを明示的に指定する必要はありません。ILMはマイグレートアクションを自動的に実行しますが、マイグレーションを無効にしない限りは。

Python

  1. resp = client.ilm.put_lifecycle(
  2. name="my_policy",
  3. policy={
  4. "phases": {
  5. "warm": {
  6. "actions": {
  7. "migrate": {},
  8. "allocate": {
  9. "number_of_replicas": 1
  10. }
  11. }
  12. }
  13. }
  14. },
  15. )
  16. print(resp)

Ruby

  1. response = client.ilm.put_lifecycle(
  2. policy: 'my_policy',
  3. body: {
  4. policy: {
  5. phases: {
  6. warm: {
  7. actions: {
  8. migrate: {},
  9. allocate: {
  10. number_of_replicas: 1
  11. }
  12. }
  13. }
  14. }
  15. }
  16. }
  17. )
  18. puts response

Js

  1. const response = await client.ilm.putLifecycle({
  2. name: "my_policy",
  3. policy: {
  4. phases: {
  5. warm: {
  6. actions: {
  7. migrate: {},
  8. allocate: {
  9. number_of_replicas: 1,
  10. },
  11. },
  12. },
  13. },
  14. },
  15. });
  16. console.log(response);

Console

  1. PUT _ilm/policy/my_policy
  2. {
  3. "policy": {
  4. "phases": {
  5. "warm": {
  6. "actions": {
  7. "migrate" : {
  8. },
  9. "allocate": {
  10. "number_of_replicas": 1
  11. }
  12. }
  13. }
  14. }
  15. }
  16. }

Disable automatic migration

次のポリシーでは、マイグレートアクションが無効になっており、allocateアクションがインデックスをoneまたはtworack_idを持つノードに割り当てます。

Python

  1. resp = client.ilm.put_lifecycle(
  2. name="my_policy",
  3. policy={
  4. "phases": {
  5. "warm": {
  6. "actions": {
  7. "migrate": {
  8. "enabled": False
  9. },
  10. "allocate": {
  11. "include": {
  12. "rack_id": "one,two"
  13. }
  14. }
  15. }
  16. }
  17. }
  18. },
  19. )
  20. print(resp)

Ruby

  1. response = client.ilm.put_lifecycle(
  2. policy: 'my_policy',
  3. body: {
  4. policy: {
  5. phases: {
  6. warm: {
  7. actions: {
  8. migrate: {
  9. enabled: false
  10. },
  11. allocate: {
  12. include: {
  13. rack_id: 'one,two'
  14. }
  15. }
  16. }
  17. }
  18. }
  19. }
  20. }
  21. )
  22. puts response

Js

  1. const response = await client.ilm.putLifecycle({
  2. name: "my_policy",
  3. policy: {
  4. phases: {
  5. warm: {
  6. actions: {
  7. migrate: {
  8. enabled: false,
  9. },
  10. allocate: {
  11. include: {
  12. rack_id: "one,two",
  13. },
  14. },
  15. },
  16. },
  17. },
  18. },
  19. });
  20. console.log(response);

Console

  1. PUT _ilm/policy/my_policy
  2. {
  3. "policy": {
  4. "phases": {
  5. "warm": {
  6. "actions": {
  7. "migrate" : {
  8. "enabled": false
  9. },
  10. "allocate": {
  11. "include" : {
  12. "rack_id": "one,two"
  13. }
  14. }
  15. }
  16. }
  17. }
  18. }
  19. }