ライフサイクルステップAPIへの移行
特定のステップをlifecycleポリシーで実行するトリガーを発動します。
リクエスト
POST _ilm/move/<index>
前提条件
- Elasticsearchのセキュリティ機能が有効になっている場合、このAPIを使用するには管理対象のインデックスに対して
manage_ilm
の権限が必要です。詳細についてはセキュリティ権限を参照してください。
説明
この操作はデータの損失を引き起こす可能性があります。インデックスを特定のステップに手動で移動すると、そのステップがすでに実行されていてもそのステップが実行されます。これは潜在的に破壊的なアクションであり、専門家レベルのAPIと見なされるべきです。
インデックスを指定されたステップに手動で移動し、そのステップを実行します。リクエストの本文には現在のステップと実行するステップの両方を指定する必要があります。
現在のステップがインデックスに対して現在実行中のステップと一致しない場合、リクエストは失敗します。これは、インデックスが予期しないステップから次のステップに移動するのを防ぐためです。
インデックスが移動するターゲット(next_step
)を指定する際、name
またはaction
とname
の両方のフィールドはオプションです。フェーズのみが指定された場合、インデックスはターゲットフェーズの最初のアクションの最初のステップに移動します。フェーズとアクションが指定された場合、インデックスは指定されたフェーズの指定されたアクションの最初のステップに移動します。ILMポリシーで指定されたアクションのみが有効と見なされ、インデックスはポリシーの一部でないステップに移動することはできません。
パスパラメータ
<index>
- (必須、文字列) インデックスの識別子。
クエリパラメータ
master_timeout
- (オプション、時間単位) マスターノードを待機する期間。タイムアウトが切れる前にマスターノードが利用できない場合、リクエストは失敗し、エラーが返されます。デフォルトは
30s
です。リクエストがタイムアウトしないことを示すために-1
に設定することもできます。 timeout
- (オプション、時間単位) クラスタメタデータを更新した後、クラスタ内のすべての関連ノードからの応答を待機する期間。タイムアウトが切れる前に応答が受信されない場合、クラスタメタデータの更新は適用されますが、応答は完全に承認されなかったことを示します。デフォルトは
30s
です。リクエストがタイムアウトしないことを示すために-1
に設定することもできます。
リクエストボディ
current_step
- (必須、オブジェクト)
- `````phase
- (必須、文字列) 現在のフェーズの名前。explain APIによって返されるフェーズと一致する必要があります。
action
- (必須、文字列) 現在のアクションの名前。explain APIによって返されるアクションと一致する必要があります。
name
- (必須、文字列) 現在のステップの名前。explain APIによって返されるステップと一致する必要があります。ILMがアクションを実行中に問題が発生した場合、ポリシーの実行を停止し、
ERROR
ステップに遷移します。失敗をトラブルシューティングした後にポリシーを進めようとする場合、このERROR
ステップを現在のステップとして指定します。詳細についてはILMエラーハンドリングを参照してください。
next_step
- (必須、オブジェクト)
- `````phase
- (必須、文字列) 実行または再開したいアクションを含むフェーズの名前。
action
- (オプション、文字列) 実行または再開したいアクションの名前。
name
が使用される場合は必須です。 name
- (オプション、文字列) 移動して実行するステップの名前。
action
が使用される場合は必須です。
例
次の例では、my-index-000001
を初期ステップからforcemerge
ステップに移動します:
Python
resp = client.ilm.move_to_step(
index="my-index-000001",
current_step={
"phase": "new",
"action": "complete",
"name": "complete"
},
next_step={
"phase": "warm",
"action": "forcemerge",
"name": "forcemerge"
},
)
print(resp)
Js
const response = await client.ilm.moveToStep({
index: "my-index-000001",
current_step: {
phase: "new",
action: "complete",
name: "complete",
},
next_step: {
phase: "warm",
action: "forcemerge",
name: "forcemerge",
},
});
console.log(response);
コンソール
POST _ilm/move/my-index-000001
{
"current_step": {
"phase": "new",
"action": "complete",
"name": "complete"
},
"next_step": {
"phase": "warm",
"action": "forcemerge",
"name": "forcemerge"
}
}
インデックスが存在することが期待されるステップ | |
実行したいステップ | |
インデックスが移動するオプションのアクション | |
インデックスが移動するオプションのステップ名 |
コンソール-結果
{
"acknowledged": true
}
インデックスがnew
フェーズにない場合、リクエストは失敗します。
次の例では、my-index-000001
をホットフェーズの終わりからウォームの開始にプッシュします:
Python
resp = client.ilm.move_to_step(
index="my-index-000001",
current_step={
"phase": "hot",
"action": "complete",
"name": "complete"
},
next_step={
"phase": "warm"
},
)
print(resp)
Js
const response = await client.ilm.moveToStep({
index: "my-index-000001",
current_step: {
phase: "hot",
action: "complete",
name: "complete",
},
next_step: {
phase: "warm",
},
});
console.log(response);
コンソール
POST _ilm/move/my-index-000001
{
"current_step": {
"phase": "hot",
"action": "complete",
"name": "complete"
},
"next_step": {
"phase": "warm"
}
}