ライフサイクルポリシー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

  1. resp = client.ilm.put_lifecycle(
  2. name="my_policy",
  3. policy={
  4. "_meta": {
  5. "description": "used for nginx log",
  6. "project": {
  7. "name": "myProject",
  8. "department": "myDepartment"
  9. }
  10. },
  11. "phases": {
  12. "warm": {
  13. "min_age": "10d",
  14. "actions": {
  15. "forcemerge": {
  16. "max_num_segments": 1
  17. }
  18. }
  19. },
  20. "delete": {
  21. "min_age": "30d",
  22. "actions": {
  23. "delete": {}
  24. }
  25. }
  26. }
  27. },
  28. )
  29. print(resp)

Ruby

  1. response = client.ilm.put_lifecycle(
  2. policy: 'my_policy',
  3. body: {
  4. policy: {
  5. _meta: {
  6. description: 'used for nginx log',
  7. project: {
  8. name: 'myProject',
  9. department: 'myDepartment'
  10. }
  11. },
  12. phases: {
  13. warm: {
  14. min_age: '10d',
  15. actions: {
  16. forcemerge: {
  17. max_num_segments: 1
  18. }
  19. }
  20. },
  21. delete: {
  22. min_age: '30d',
  23. actions: {
  24. delete: {}
  25. }
  26. }
  27. }
  28. }
  29. }
  30. )
  31. puts response

Js

  1. const response = await client.ilm.putLifecycle({
  2. name: "my_policy",
  3. policy: {
  4. _meta: {
  5. description: "used for nginx log",
  6. project: {
  7. name: "myProject",
  8. department: "myDepartment",
  9. },
  10. },
  11. phases: {
  12. warm: {
  13. min_age: "10d",
  14. actions: {
  15. forcemerge: {
  16. max_num_segments: 1,
  17. },
  18. },
  19. },
  20. delete: {
  21. min_age: "30d",
  22. actions: {
  23. delete: {},
  24. },
  25. },
  26. },
  27. },
  28. });
  29. console.log(response);

コンソール

  1. PUT _ilm/policy/my_policy
  2. {
  3. "policy": {
  4. "_meta": {
  5. "description": "used for nginx log",
  6. "project": {
  7. "name": "myProject",
  8. "department": "myDepartment"
  9. }
  10. },
  11. "phases": {
  12. "warm": {
  13. "min_age": "10d",
  14. "actions": {
  15. "forcemerge": {
  16. "max_num_segments": 1
  17. }
  18. }
  19. },
  20. "delete": {
  21. "min_age": "30d",
  22. "actions": {
  23. "delete": {}
  24. }
  25. }
  26. }
  27. }
  28. }

リクエストが成功した場合、次の結果が返されます:

コンソール-結果

  1. {
  2. "acknowledged": true
  3. }