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_preference
をdata_warm,data_hot
に設定します。これにより、インデックスはウォームティアのノードに移動します。ウォームティアにノードがない場合は、ホットティアにフォールバックします。
コールドフェーズでは、migrate
アクションがindex.routing.allocation.include._tier_preference
をdata_cold,data_warm,data_hot
に設定します。これにより、インデックスはコールドティアのノードに移動します。コールドティアにノードがない場合は、ウォームティアにフォールバックし、ウォームノードが利用できない場合はホットティアにフォールバックします。
マイグレートアクションは、フローズンフェーズでは許可されていません。フローズンフェーズは、index.routing.allocation.include._tier_preference
のdata_frozen
を使用して、直接検索可能なスナップショットをマウントします。これにより、インデックスはフローズンティアのノードに移動します。
マイグレートアクションは、ホットフェーズでは許可されていません。初期インデックスの割り当ては自動的に行われ、手動またはindex templatesを介して構成できます。
Options
enabled
- (オプション、ブール値) このフェーズ中にILMがインデックスを自動的にマイグレートするかどうかを制御します。デフォルトは
true
です。
Example
次のポリシーでは、allocateアクションが指定されており、ILMがインデックスをウォームノードにマイグレートする前にレプリカの数を減らします。
マイグレートアクションを明示的に指定する必要はありません。ILMはマイグレートアクションを自動的に実行しますが、マイグレーションを無効にしない限りは。
Python
resp = client.ilm.put_lifecycle(
name="my_policy",
policy={
"phases": {
"warm": {
"actions": {
"migrate": {},
"allocate": {
"number_of_replicas": 1
}
}
}
}
},
)
print(resp)
Ruby
response = client.ilm.put_lifecycle(
policy: 'my_policy',
body: {
policy: {
phases: {
warm: {
actions: {
migrate: {},
allocate: {
number_of_replicas: 1
}
}
}
}
}
}
)
puts response
Js
const response = await client.ilm.putLifecycle({
name: "my_policy",
policy: {
phases: {
warm: {
actions: {
migrate: {},
allocate: {
number_of_replicas: 1,
},
},
},
},
},
});
console.log(response);
Console
PUT _ilm/policy/my_policy
{
"policy": {
"phases": {
"warm": {
"actions": {
"migrate" : {
},
"allocate": {
"number_of_replicas": 1
}
}
}
}
}
}
Disable automatic migration
次のポリシーでは、マイグレートアクションが無効になっており、allocateアクションがインデックスをoneまたはtwoのrack_id
を持つノードに割り当てます。
Python
resp = client.ilm.put_lifecycle(
name="my_policy",
policy={
"phases": {
"warm": {
"actions": {
"migrate": {
"enabled": False
},
"allocate": {
"include": {
"rack_id": "one,two"
}
}
}
}
}
},
)
print(resp)
Ruby
response = client.ilm.put_lifecycle(
policy: 'my_policy',
body: {
policy: {
phases: {
warm: {
actions: {
migrate: {
enabled: false
},
allocate: {
include: {
rack_id: 'one,two'
}
}
}
}
}
}
}
)
puts response
Js
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);
Console
PUT _ilm/policy/my_policy
{
"policy": {
"phases": {
"warm": {
"actions": {
"migrate" : {
"enabled": false
},
"allocate": {
"include" : {
"rack_id": "one,two"
}
}
}
}
}
}
}