Amazon OpenSearch Service でのインデックスステート管理 - Amazon OpenSearch サービス

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

Amazon OpenSearch Service でのインデックスステート管理

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 が必要です。完全なドキュメントは、「OpenSearch ドキュメント」で入手できます。

重要

インデックステンプレートを使用して、新しく作成されたインデックスに ISM ポリシーを適用することはできなくなりました。ISM テンプレートフィールドを使用して、新しく作成されたインデックスを引き続き自動的に管理することができます。この更新では、この設定を使用する既存の CloudFormation テンプレートに影響する重大な変更が導入されました。

ISM ポリシーを作成する

インデックス状態管理を開始するには
  1. Amazon OpenSearch Service コンソール (https://console.aws.amazon.com/aos/home) を開きます。

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

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

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

  5. ビジュアルエディタ または JSON エディタ を使用してポリシーを作成します。より構造化された方法でポリシーを定義できるビジュアルエディタを使用することをお勧めします。ポリシーの作成については、以下の サンプルポリシー を参照してください。

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

    POST _plugins/_ism/add/my-index { "policy_id": "my-policy-id" }
    注記

    ドメインで従来の Elasticsearch バージョンを実行している場合は、_plugins の代わりに _opendistro を使用します。

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

サンプルポリシー

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

ホットからウォーム、またコールドストレージまで

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

インデックスは、最初は 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": {} }] } ] } }

レプリカの数を減らす

このサンプルポリシーはもう少し単純で、ディスク容量を節約するために 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": [] } ] } }

インデックスのスナップショットを撮る

このサンプルポリシーでは、snapshot オペレーションを使用して、インデックスに少なくとも 1 つのドキュメントが含まれているとすぐに、インデックスのスナップショットを撮ります。repository は、Amazon S3 に登録した手動スナップショットリポジトリの名前です。snapshot は、スナップショットの名前です。スナップショットの前提条件およびリポジトリを登録する手順については、「Amazon OpenSearch サービスでのインデックススナップショットの作成」を参照してください。

{ "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 テンプレート

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 テンプレートを使用したサンプルポリシー」を参照してください。

違い

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

ISM オペレーション

  • OpenSearch Service は、3 つのISM 固有のオペレーションである warm_migrationcold_migrationcold_delete をサポートします。

    • ドメインで UltraWarm が有効になっている場合、warm_migration アクションはインデックスをウォームストレージに移行します。

    • ドメインでコールドストレージが有効になっている場合、cold_migration アクションはインデックスをコールドストレージに移行し、cold_delete アクションはインデックスをコールドストレージから削除します。

    これらのアクションのいずれかが設定されたタイムアウト期間内に完了しない場合でも、ウォームインデックスへの移行は継続されます。上記のアクションのいずれかに error_notification を設定すると、タイムアウト期間内にアクションが完了しなかった場合に、そのアクションが失敗したことが通知されますが、この通知は参考用です。実際のオペレーションに固有のタイムアウトはなく、最終的に成功または失敗するまで実行が継続されます。

  • ドメインが OpenSearch または Elasticsearch 7.4 以降を実行している場合、OpenSearch Service は ISM open および close オペレーションをサポートします。

  • ドメインが OpenSearch または Elasticsearch 7.7 以降を実行している場合、OpenSearch サービスは ISM snapshot オペレーションをサポートします。

コールドストレージ ISM オペレーション

コールドインデックスでは、次の ISM API を使用するときに ?type=_cold パラメータを指定する必要があります。

これらのコールドインデックス用の 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 の設定

OpenSearch と Elasticsearch を使用すると、_cluster/settings API を使用して利用可能なすべての ISM 設定を変更することができます。Amazon OpenSearch Service では、次の ISM 設定のみを変更できます。

  • クラスターレベルの設定:

    • plugins.index_state_management.enabled

    • plugins.index_state_management.history.enabled

  • インデックスレベルの設定:

    • plugins.index_state_management.rollover_alias