ライフサイクルポリシーAPIの作成または更新
ライフサイクルポリシーを作成または更新します。ポリシーコンポーネントの定義については、インデックスライフサイクルを参照してください。
リクエスト
PUT _ilm/policy/<policy_id>
前提条件
- Elasticsearchのセキュリティ機能が有効になっている場合、このAPIを使用するには
manage_ilm
クラスター権限が必要です。また、policy
によって管理されているすべてのインデックスに対してmanage
インデックス権限も必要です。ILMは、ポリシーを最後に更新したユーザーとして操作を実行します。ILMは、最後のポリシー更新時にユーザーに割り当てられたロールのみを持っています。
説明
ライフサイクルポリシーを作成します。指定されたポリシーが存在する場合、ポリシーは置き換えられ、ポリシーバージョンがインクリメントされます。
最新のポリシーバージョンのみが保存され、以前のバージョンに戻すことはできません。
パスパラメータ
<policy_id>
- (必須、文字列) ポリシーの識別子。
組み込みおよびFleet管理のILMポリシーとの名前の衝突を避けるために、独自のILMポリシーのIDの一部として@
を使用しないでください。
クエリパラメータ
master_timeout
- (オプション、時間単位) マスターノードを待機する期間。タイムアウトが切れる前にマスターノードが利用できない場合、リクエストは失敗し、エラーが返されます。デフォルトは
30s
です。リクエストがタイムアウトしないことを示すために-1
に設定することもできます。 timeout
- (オプション、時間単位) クラスタメタデータを更新した後、クラスタ内のすべての関連ノードからの応答を待機する期間。タイムアウトが切れる前に応答が受信されない場合、クラスタメタデータの更新は適用されますが、応答は完全に承認されなかったことを示します。デフォルトは
30s
です。リクエストがタイムアウトしないことを示すために-1
に設定することもできます。
例
次の例では、my_policy
という名前の新しいポリシーを作成します。さらに、_meta
パラメータを使用してポリシーに任意のメタデータを追加できます。_meta
パラメータはオプションであり、Elasticsearchによって自動的に生成または使用されることはありません。_meta
を解除するには、ポリシーを指定せずに置き換えます。_meta
を確認するには、ライフサイクルポリシーの取得APIを使用できます。
Python
resp = client.ilm.put_lifecycle(
name="my_policy",
policy={
"_meta": {
"description": "used for nginx log",
"project": {
"name": "myProject",
"department": "myDepartment"
}
},
"phases": {
"warm": {
"min_age": "10d",
"actions": {
"forcemerge": {
"max_num_segments": 1
}
}
},
"delete": {
"min_age": "30d",
"actions": {
"delete": {}
}
}
}
},
)
print(resp)
Ruby
response = client.ilm.put_lifecycle(
policy: 'my_policy',
body: {
policy: {
_meta: {
description: 'used for nginx log',
project: {
name: 'myProject',
department: 'myDepartment'
}
},
phases: {
warm: {
min_age: '10d',
actions: {
forcemerge: {
max_num_segments: 1
}
}
},
delete: {
min_age: '30d',
actions: {
delete: {}
}
}
}
}
}
)
puts response
Js
const response = await client.ilm.putLifecycle({
name: "my_policy",
policy: {
_meta: {
description: "used for nginx log",
project: {
name: "myProject",
department: "myDepartment",
},
},
phases: {
warm: {
min_age: "10d",
actions: {
forcemerge: {
max_num_segments: 1,
},
},
},
delete: {
min_age: "30d",
actions: {
delete: {},
},
},
},
},
});
console.log(response);
コンソール
PUT _ilm/policy/my_policy
{
"policy": {
"_meta": {
"description": "used for nginx log",
"project": {
"name": "myProject",
"department": "myDepartment"
}
},
"phases": {
"warm": {
"min_age": "10d",
"actions": {
"forcemerge": {
"max_num_segments": 1
}
}
},
"delete": {
"min_age": "30d",
"actions": {
"delete": {}
}
}
}
}
}
コンソール-結果
{
"acknowledged": true
}