

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon OpenSearch Service でのインデックスステート管理
<a name="ism"></a>

Amazon OpenSearch Service の Index State Management (ISM) を使用すると、日常的なタスクを自動化するカスタム管理ポリシーを定義し、それらをインデックスおよびインデックスパターンに適用できます。これにより、インデックスオペレーションを実行するために、外部プロセスを設定および管理する必要がなくなります。

ポリシーには、デフォルトの状態と、移行するインデックスの状態一覧が含まれています。各状態内で、実行するアクションのリストと、移行をトリガーする条件を定義できます。一般的なユースケースは、一定期間が経過した古いインデックスを定期的に削除することです。例えば、30 日後にインデックスを `read_only` 状態に移行して、90 日後に最終的に削除するポリシーを定義できます。

ポリシーをインデックスにアタッチすると、ISM は 5～8 分ごと (1.3 より前のクラスターに対しては 30～48 分ごと) に実行されるジョブを作成し、ポリシーアクションを実行して条件を確認してから、インデックスを別の状態に移行します。このジョブを実行する基本時間は 5 分ごとです。さらに、0～60% のランダムジッターが追加されることで、すべてのインデックスからのアクティビティが同時に急増することがなくなります。クラスターの状態が赤の場合、ISM はジョブを実行しません。

ISM では、OpenSearch または Elasticsearch 6.8 が必要です。

**注記**  
このドキュメントでは、ISM の概要といくつかのサンプルポリシーについて説明します。また、Amazon OpenSearch Service ドメインの ISM とセルフマネージド OpenSearch クラスターの ISM の違いについても説明します。包括的なパラメータリファレンス、各設定の説明、API リファレンスを含む ISM の完全なドキュメントについては、OpenSearch ドキュメントの「[Index State Management](https://docs.opensearch.org/latest/im-plugin/ism/index/)」を参照してください。

**重要**  
インデックステンプレートを使用して、新しく作成されたインデックスに ISM ポリシーを適用することはできなくなりました。[ISM テンプレートフィールド](https://opensearch.org/docs/latest/im-plugin/ism/policies/#sample-policy-with-ism-template-for-auto-rollover)を使用して、新しく作成されたインデックスを引き続き自動的に管理することができます。この更新では、この設定を使用する既存の CloudFormation テンプレートに影響する重大な変更が導入されました。

## ISM ポリシーを作成する
<a name="ism-start"></a>

**インデックス状態管理を開始するには**

1. [https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home) で Amazon OpenSearch Service コンソールを開きます。

1. ISM ポリシーを作成するドメインを選択します。

1. ドメインのダッシュボードから、OpenSearch Dashboards の URL に移動し、マスターユーザー名とパスワードでサインインします。URL はこの形式に従います。

   ```
   domain-endpoint/_dashboards/
   ```

1. OpenSearch Dashboards 内の左側のナビゲーションパネルを開き、**[Index Management]** (インデックス管理)、それから **[Create policy]** (ポリシーの作成) を選択します。

1. [ビジュアルエディタ](https://opensearch.org/docs/latest/im-plugin/ism/index/#visual-editor) または [JSON エディタ](https://opensearch.org/docs/latest/im-plugin/ism/index/#json-editor) を使用してポリシーを作成します。より構造化された方法でポリシーを定義できるビジュアルエディタを使用することをお勧めします。ポリシーの作成については、以下の [サンプルポリシー](#ism-example) を参照してください。

1. ポリシーを作成したら、それを 1 つ以上のインデックスにアタッチします。

   ```
   POST _plugins/_ism/add/my-index
   {
     "policy_id": "my-policy-id"
   }
   ```
**注記**  
ドメインで従来の Elasticsearch バージョンを実行している場合は、`_plugins` の代わりに `_opendistro` を使用します。

   または、OpenSearch Dashboards でインデックスを選択し、[**ポリシーの適用**] を選択します。

## サンプルポリシー
<a name="ism-example"></a>

次のサンプルポリシーは、一般的な ISM ユースケースを自動化する方法を示しています。

### ホットからウォーム、またコールドストレージまで
<a name="ism-example-cold"></a>

このサンプルポリシーでは、インデックスをホットストレージから [UltraWarm](ultrawarm.md) に移動し、最終的に[コールドストレージ](cold-storage.md)に移動します。次に、インデックスを削除します。

インデックスは、最初は `hot` 状態です。10 日後、ISM はインデックスを `warm` 状態に移動します。その 80 日後、90 日が経過したインデックスは `cold` 状態に移動します。1 年後、サービスは、インデックスを削除中であるという通知を Amazon Chime ルームに送信してから、完全にインデックスを削除します。

コールドインデックスでは、通常の `delete` オペレーションではなく、`cold_delete` オペレーションが必要であることに注意してください。また、ISM でコールドインデックスを管理するには、データに明示的な `timestamp_field` が必要であることに注意してください。

```
{
  "policy": {
    "description": "Demonstrate a hot-warm-cold-delete workflow.",
    "default_state": "hot",
    "schema_version": 1,
    "states": [{
        "name": "hot",
        "actions": [],
        "transitions": [{
          "state_name": "warm",
          "conditions": {
            "min_index_age": "10d"
          }
        }]
      },
      {
        "name": "warm",
        "actions": [{
          "warm_migration": {},
          "retry": {
            "count": 5,
            "delay": "1h"
          }
        }],
        "transitions": [{
          "state_name": "cold",
          "conditions": {
            "min_index_age": "90d"
          }
        }]
      },
      {
        "name": "cold",
        "actions": [{
            "cold_migration": {
              "timestamp_field": "<your timestamp field>"
            }
          }
        ],
        "transitions": [{
          "state_name": "delete",
          "conditions": {
             "min_index_age": "365d"
          }
        }]
      },
      {
        "name": "delete",
        "actions": [{
          "notification": {
            "destination": {
              "chime": {
                "url": "<URL>"
              }
            },
            "message_template": {
              "source": "The index {{ctx.index}} is being deleted."
            }
          }
        },
        {
          "cold_delete": {}
        }]
      }
    ]
  }
}
```

### レプリカの数を減らす
<a name="ism-example-replica"></a>

このサンプルポリシーはもう少し単純で、ディスク容量を節約するために 7 日後にレプリカ数をゼロに減らし、21 日後にインデックスを削除します。このポリシーは、インデックスが重要ではなく、書き込みリクエストをこれ以上受信しないことを前提としています。レプリカ数をゼロにすると、データ損失のリスクがあります。

```
{
  "policy": {
    "description": "Changes replica count and deletes.",
    "schema_version": 1,
    "default_state": "current",
    "states": [{
        "name": "current",
        "actions": [],
        "transitions": [{
          "state_name": "old",
          "conditions": {
            "min_index_age": "7d"
          }
        }]
      },
      {
        "name": "old",
        "actions": [{
          "replica_count": {
            "number_of_replicas": 0
          }
        }],
        "transitions": [{
          "state_name": "delete",
          "conditions": {
            "min_index_age": "21d"
          }
        }]
      },
      {
        "name": "delete",
        "actions": [{
          "delete": {}
        }],
        "transitions": []
      }
    ]
  }
}
```

### インデックスのスナップショットを撮る
<a name="ism-example-snapshot"></a>

このサンプルポリシーでは、`[snapshot](https://docs.opensearch.org/latest/im-plugin/ism/policies/#snapshot)` オペレーションを使用して、インデックスに少なくとも 1 つのドキュメントが含まれているとすぐに、インデックスのスナップショットを撮ります。`repository` は、Amazon S3 に登録した手動スナップショットリポジトリの名前です。`snapshot` は、スナップショットの名前です。スナップショットの前提条件およびリポジトリを登録する手順については、「[Amazon OpenSearch Service でのインデックススナップショットの作成](managedomains-snapshots.md)」を参照してください。

```
{
  "policy": {
    "description": "Takes an index snapshot.",
    "schema_version": 1,
    "default_state": "empty",
    "states": [{
        "name": "empty",
        "actions": [],
        "transitions": [{
          "state_name": "occupied",
          "conditions": {
            "min_doc_count": 1
          }
        }]
      },
      {
        "name": "occupied",
        "actions": [{
          "snapshot": {
            "repository": "<my-repository>",
            "snapshot": "<my-snapshot>"
            }
          }],
          "transitions": []
      }
    ]
  }
}
```

## ISM テンプレート
<a name="ism-template"></a>

`ism_template` フィールドをポリシーにセットアップすると、テンプレートパターンと一致するインデックスを作成したときに、ポリシーがそのインデックスに自動的にアタッチされるようになります。この例では、「log」で始まる名前で作成したインデックスは、自動的に ISM ポリシー`my-policy-id` と一致します。

```
PUT _plugins/_ism/policies/my-policy-id
{
  "policy": {
    "description": "Example policy.",
    "default_state": "...",
    "states": [...],
    "ism_template": {
      "index_patterns": ["log*"],
      "priority": 100
    }
  }
}
```

より詳細な例については、「[自動ロールオーバー用 ISM テンプレートを使用したサンプルポリシー](https://opensearch.org/docs/latest/im-plugin/ism/policies/#sample-policy-with-ism-template-for-auto-rollover)」を参照してください。

## 相違点
<a name="ism-diff"></a>

OpenSearch および Elasticsearch と比較して、ISM for Amazon OpenSearch Service にはいくつかの違いがあります。

### ISM オペレーション
<a name="alerting-diff-op"></a>
+ OpenSearch Service は、3 つのISM 固有のオペレーションである `warm_migration`、`cold_migration`、`cold_delete` をサポートします。
  + ドメインで [UltraWarm](ultrawarm.md) が有効になっている場合、`warm_migration` アクションはインデックスをウォームストレージに移行します。
  + ドメインで[コールドストレージ](cold-storage.md)が有効になっている場合、`cold_migration` アクションはインデックスをコールドストレージに移行し、`cold_delete` アクションはインデックスをコールドストレージから削除します。

  これらのアクションのいずれかが[設定されたタイムアウト期間](https://docs.opensearch.org/latest/im-plugin/ism/policies/#actions)内に完了しない場合でも、ウォームインデックスへの移行は継続されます。上記のアクションのいずれかに [error\$1notification](https://opensearch.org/docs/latest/im-plugin/ism/policies/#error-notifications) を設定すると、タイムアウト期間内にアクションが完了しなかった場合に、そのアクションが失敗したことが通知されますが、この通知は参考用です。実際のオペレーションに固有のタイムアウトはなく、最終的に成功または失敗するまで実行が継続されます。
+ ドメインが OpenSearch または Elasticsearch 7.4 以降を実行している場合、OpenSearch Service は ISM `open` および `close` オペレーションをサポートします。
+ ドメインが OpenSearch または Elasticsearch 7.7 以降を実行している場合、OpenSearch サービスは ISM `snapshot` オペレーションをサポートします。

### コールドストレージ ISM オペレーション
<a name="ism-cold-storage"></a>

コールドインデックスでは、次の ISM API を使用するときに `?type=_cold` パラメータを指定する必要があります。
+ [ポリシーを追加する](https://opensearch.org/docs/latest/im-plugin/ism/api/#add-policy)
+ [ポリシーを削除する](https://opensearch.org/docs/latest/im-plugin/ism/api/#remove-policy-from-index)
+ [ポリシーを更新する](https://opensearch.org/docs/latest/im-plugin/ism/api/#update-policy)
+ [失敗したインデックスを再試行する](https://opensearch.org/docs/latest/im-plugin/ism/api/#retry-failed-index)
+ [インデックスを説明する](https://opensearch.org/docs/latest/im-plugin/ism/api/#explain-index)

これらのコールドインデックス用の API には、次のような違いがあります。
+ ワイルドカード演算子は、最後に使用する場合を除き、サポートされていません。例えば、`_plugins/_ism/<add, remove, change_policy, retry, explain>/logstash-*` はサポートされていますが、`_plugins/_ism/<add, remove, change_policy, retry, explain>/iad-*-prod` はサポートされていません。
+ 複数のインデックスの名前とパターンはサポートされていません。例えば、`_plugins/_ism/<add, remove, change_policy, retry, explain>/app-logs` はサポートされていますが、`_plugins/_ism/<add, remove, change_policy, retry, explain>/app-logs,sample-data` はサポートされていません。

### ISM の設定
<a name="ism-diff-settings"></a>

OpenSearch と Elasticsearch を使用すると、`_cluster/settings` API を使用して利用可能なすべての ISM 設定を変更することができます。Amazon OpenSearch Service では、次の [ISM 設定](https://opensearch.org/docs/latest/im-plugin/ism/settings/)のみを変更できます。
+ **クラスターレベルの設定:**
  + `plugins.index_state_management.enabled`
  + `plugins.index_state_management.history.enabled`
+ **インデックスレベルの設定:**
  + `plugins.index_state_management.rollover_alias`

   