すべてのプロダクト
Search
ドキュメントセンター

Elasticsearch:検索可能スナップショット

最終更新日:Jun 25, 2026

検索可能スナップショットを使用すると、クエリ機能を維持しながら、履歴データをスナップショットとして Alibaba Cloud OSS に保存できます。これにより、データの可用性を損なうことなくストレージコストを削減できます。詳細については、「ES Searchable snapshots」をご参照ください。

制限

アーカイブデータノードの有効化

検索可能スナップショットを使用するには、Alibaba Cloud Elasticsearch インスタンスでアーカイブデータノードを有効にする必要があります。アーカイブデータノードは、検索可能スナップショットのコンピューティングレイヤーであり、インデックスのメタデータを維持し、ローカルキャッシュを管理し、Alibaba Cloud OSS からデータブロックをオンデマンドで取得します。

  1. Alibaba Cloud Elasticsearch コンソールにログインします。

  2. インスタンスに応じて、以下の手順に従ってください。

    • 新しい 8.17.0 インスタンスの場合:インスタンス作成ページで、バージョン 8.17.0 を選択します。インスタンス仕様セクションで、アーカイブデータノード を選択し、ノード数と仕様を設定します。

  3. ノード仕様を選択します。

    データは Alibaba Cloud OSS に保存されるため、アーカイブデータノードには大きなローカルディスクは必要ありません。キャッシュヒット率を向上させるために、十分なメモリを設定することを推奨します。推奨構成:4 コア、16 GB メモリ以上、500 GB 以上のディスク (効率的なクラウドディスクまたは ESSD)。

  4. 購入を確定し、変更が完了するのを待ちます。アーカイブデータノードの準備が完了すると、検索可能スナップショット機能はデフォルトで有効になり、追加の操作は不要です。

OSS スナップショットリポジトリの構成

Alibaba Cloud Elasticsearch には repository-oss プラグインがプリインストールされています。プラグインをインストールすることなく、Alibaba Cloud OSS をスナップショットリポジトリとして使用できます。

重要

Alibaba Cloud Elasticsearch インスタンスに付属するデフォルトの aliyun_auto_snapshot リポジトリは、古いスナップショットデータを定期的に削除します。このリポジトリを検索可能スナップショットに使用すると、スナップショットが削除された後、マウントされたインデックスのデータは永久に失われ、回復できなくなります。本番環境では、別途 OSS スナップショットリポジトリを作成する必要があります。

Kibana の Dev Tools で、次のコマンドを実行して OSS スナップショットリポジトリを登録します。

PUT _snapshot/my_oss_repo
{
  "type": "oss",
  "settings": {
    "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com",
    "access_key_id": "<your_access_key_id>",
    "secret_access_key": "<your_secret_access_key>",
    "bucket": "<your_bucket_name>",
    "base_path": "es_snapshots",
    "compress": true,
    "chunk_size": "500mb"
  }
}

パラメーター

説明

endpoint

Alibaba Cloud OSS のリージョンエンドポイント。internal プライベートエンドポイントを使用すると、転送速度が向上し、パブリックネットワークのトラフィックコストを回避できます。

access_key_id

Alibaba Cloud の AccessKey ID です。対応する RAM ユーザーには、対象バケットに対する読み取りおよび書き込み権限が必要です。

secret_access_key

Alibaba Cloud の AccessKey Secret です。

bucket

Alibaba Cloud OSS バケットの名前です。バケットは Alibaba Cloud Elasticsearch インスタンスと同じリージョンに配置することを推奨します。

base_path

バケット内のスナップショットのストレージパスプレフィックスです。

compress

メタデータファイルを圧縮するかどうかを指定します。推奨設定は true です。

chunk_size

大きなファイルのアップロード時のチャンクサイズです。大きなインデックスに便利です。

リポジトリの接続を確認します。

POST _snapshot/my_oss_repo/_verify

成功したレスポンスにはクラスターノードがリストされ、必要な読み取りおよび書き込み権限で Alibaba Cloud OSS に接続されたことが確認されます。OSS プラグインのパラメーターの完全なリストについては、「elasticsearch-repository-oss」をご参照ください。

スナップショットの作成とマウント

スナップショットの作成

アーカイブしたいインデックスのスナップショットを作成します。

次のコマンドは、snapshot_20260227 という名前のスナップショットを作成し、my_oss_repo リポジトリに格納します。

PUT _snapshot/my_oss_repo/snapshot_20260227
{
  "indices": "logs-2025-*",
  "ignore_unavailable": true,
  "include_global_state": false
}

パラメーター

説明

リポジトリ名

my_oss_repo

スナップショットの保存場所: 検証済みの Alibaba Cloud OSS バケットに対応するリポジトリの名前。
要件: リポジトリのステータスが verified であり、クラスターに読み取りおよび書き込み権限があることを確認してください。



スナップショット名

snapshot_20260227

バックアップファイル識別子: Alibaba Cloud OSS で生成されるバックアップファイルの一意の名前です。
命名規則: バックアップのポイントインタイムを識別するために、日付 (例: 20260227) を含めることを推奨します。
一意性: 名前はリポジトリ内で一意である必要があります。 名前がすでに存在する場合、リクエストは失敗します。










indices

"logs-2025-*"

バックアップ範囲の指定: ワイルドカード * を使用して、logs-2025- で始まるすべてのインデックスに一致させます。
目的: 他の年のインデックスや .kibana のようなシステムインデックスを除外し、2025 年のログデータのみをバックアップします。



ignore_unavailable

true

耐障害性メカニズム: true に設定されている場合、バックアッププロセスはタスク全体を失敗させるのではなく、閉じられた、見つからない、または破損したインデックスをスキップします。
ベストプラクティス: ログのバックアップでは、ロールオーバーポリシーによって古いインデックスが削除されることによるバックアップの失敗を防ぐため、これを true に設定することをお勧めします。



include_global_state

false

グローバルステート制御: false の場合、スナップショットにはインデックスデータのみが含まれ、クラスター設定 (テンプレート、ユーザー権限、リポジトリ設定など) は除外されます。
ベストプラクティス: ログのバックアップでは、スナップショットを復元する際に誤って現在のクラスター設定を上書きしてしまい、不整合な状態になるのを防ぐため、通常この設定は false にします。



スナップショットの進捗を確認します。

GET _snapshot/my_oss_repo/snapshot_20260227/_status

レスポンスでは、state フィールドが SUCCESS で、かつ shards_stats.failed0 の場合、スナップショットコマンドは成功です。

説明

以下のデータはテスト目的のものです。

POST logs-2025-01-01/_doc
{ "message": "test log data 01", "level": "info", "timestamp": "2025-01-01T10:00:00" }

POST logs-2025-01-02/_doc
{ "message": "test log data 02", "level": "warn", "timestamp": "2025-01-02T10:00:00" }

POST logs-2025-01-03/_doc
{ "message": "test log data 03", "level": "error", "timestamp": "2025-01-03T10:00:00" }

POST logs-2025-01-04/_doc
{ "message": "test log data 04", "level": "info", "timestamp": "2025-01-04T10:00:00" }

POST logs-2025-01-05/_doc
{ "message": "test log data 05", "level": "debug", "timestamp": "2025-01-05T10:00:00" }

Frozen 階層へのマウント

Mount Snapshot API を使用して、スナップショットからインデックスを部分マウントモードでマウントします。

POST _snapshot/my_oss_repo/snapshot_20260227/_mount?storage=shared_cache&wait_for_completion=true
{
  "index": ".ds-logs-2025-01-01-2026.03.03-000001",
  "renamed_index": "frozen-logs-2025-01-01",
  "index_settings": {
    "index.number_of_replicas": 0
  },
  "ignore_index_settings": ["index.refresh_interval"]
}

パラメーター

説明

index

インデックスの名前です。GET _snapshot/my_oss_repo/snapshot_20260227 を実行すると、スナップショットの内容を照会して正確なインデックス名を確認できます。

storage=shared_cache

部分マウントモードを使用します。データは Alibaba Cloud OSS に残り、頻繁にアクセスされるデータのみがローカルにキャッシュされます。

renamed_index

マウントされたインデックスの新しい名前です。識別しやすくするために、frozen- のようなプレフィックスを追加することを推奨します。

重要

複数のインデックスをマウントするには、インデックスごとにこのコマンドを実行し、その都度 indexrenamed_index パラメーターを更新してください。

index.number_of_replicas

0 に設定します。Searchable Snapshot はレプリカシャードを必要としません。

wait_for_completion

true に設定すると、マウント操作が完了してから結果を返します。

重要

検索可能スナップショットが参照しているスナップショットを削除すると、インデックスデータが利用できなくなります。

マウントされたインデックスのクエリ

検索可能スナップショットのインデックスのクエリは、通常のインデックスのクエリと同じです。

GET frozen-logs-2025-01-01/_search
{
  "query": {
    "match": {
      "message": "error"
    }
  }
}

ワイルドカードを使用して、オンラインインデックスとアーカイブされたインデックスの両方を同時にクエリできます。

GET logs-2025-*,frozen-logs-2025-*/_search
{
  "query": {
    "range": {
      "timestamp": {
        "gte": "2025-01-01",
        "lt": "2025-02-01"
      }
    }
  }
}

_shards.successful がシャードの総数と等しく、かつ hits.total.value が 0 より大きい場合、レスポンスは成功とみなされます。

検索可能スナップショットインデックスのアンマウント

検索可能スナップショットのインデックスをアンマウントするには、それを削除します。この操作は Alibaba Cloud OSS 内の基になるスナップショットデータには影響せず、後で再マウントできます。

DELETE frozen-logs-2025-01-01

アーカイブされたデータを書き込み可能な通常のインデックスとして復元するには、標準の Restore API を使用して、スナップショットデータを Alibaba Cloud OSS から Elasticsearch クラスターに復元します。

POST _snapshot/my_oss_repo/snapshot_20260227/_restore
{
  "indices": ".ds-logs-2025-01-01-2026.03.03-000001",
  "rename_pattern": "(.+)",
  "rename_replacement": "restored-$1"
}

ILM によるデータライフサイクルの自動化

インデックスライフサイクル管理 (ILM) ポリシーを使用して、インデックスを Frozen 階層に自動的に移行します。次のポリシーは、完全な Hot → Warm → Frozen → Delete のライフサイクルを実装します。インデックスが Frozen フェーズに入ると、ILM は自動的に Alibaba Cloud OSS にスナップショットを作成し、それを部分マウントモードでマウントします。これらはすべて手動介入なしで行われます。

PUT _ilm/policy/logs_lifecycle_policy
{
  "policy": {
    "phases": {
      "hot": {
        "min_age": "0ms",
        "actions": {
          "rollover": {
            "max_primary_shard_size": "50gb",
            "max_age": "7d"
          }
        }
      },
      "warm": {
        "min_age": "30d",
        "actions": {
          "shrink": { "number_of_shards": 1 },
          "forcemerge": { "max_num_segments": 1 }
        }
      },
      "frozen": {
        "min_age": "90d",
        "actions": {
          "searchable_snapshot": {
            "snapshot_repository": "my_oss_repo"
          }
        }
      },
      "delete": {
        "min_age": "365d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

ライフサイクルフェーズの概要:

フェーズ

トリガー時間

コアアクション

説明

Hot

0ms
(即時)



ロールオーバー
(50 GB または 7 日)



  • 目的:新規の頻繁にアクセスされるデータを受け入れ、自動的にロールオーバーして新しいインデックスを作成します。

  • メリット:個々のインデックスが大きくなりすぎるのを防ぎ、高い書き込みパフォーマンスを維持します。

Warm

30d
(30 日後)



シュリンク
フォースマージ



  • 目的:シャード数を 1 に縮小し、セグメントを 1 つにマージします。

  • メリット:シャードのオーバーヘッドを削減し、クエリ効率を向上させ、ストレージを最適化します。

Frozen

90d
(90 日後)



検索可能スナップショット
(OSS にマウント)



  • 目的:Alibaba Cloud OSS に検索可能スナップショットを自動的に作成し、元のデータを削除できるようにします。

  • メリット:データを検索可能な状態に保ちながら、ストレージコストを約 70% 削減します。

Delete

365d
(1 年後)



削除
(永久に削除)



  • 目的:インデックスとそのスナップショットを永久に削除します。

  • メリット:データ保持のコンプライアンス要件を満たし、無制限のストレージ増大を防ぎます。

仕組み

検索可能スナップショットは、アーカイブデータノード (コンピューティングレイヤー) と Alibaba Cloud OSS (ストレージレイヤー) が連携する、ストレージとコンピューティングの分離アーキテクチャを使用しています。

  • Alibaba Cloud OSS は、永続的なストレージレイヤーとして機能し、スナップショットリポジトリとして動作します。すべてのスナップショットデータは Alibaba Cloud OSS に保存され、独自の冗長性を利用してデータの信頼性を確保します。これにより、Elasticsearch でのレプリカシャードが不要になります。

  • アーカイブデータノードはコンピューティングレイヤーであり、クエリリクエストの受信とデータアクセスの調整を担当します。各ノードには、3 つの主要なコンポーネントが含まれています。

    • メタデータ:インデックス構造とシャードマッピング情報を保存し、検索可能スナップショットインデックスの論理ビューを維持します。

    • 共有キャッシュ:頻繁にアクセスされるデータブロックをキャッシュします。このキャッシュは、同じノード上の検索可能スナップショットインデックスのすべてのシャードで共有されます。

    • クエリエンジン:クエリリクエストを受信し、キャッシュヒットを確認し、ミスが発生した場合はオンデマンドで Alibaba Cloud OSS からデータブロックを取得します。

データフローは、書き込みパスとクエリパスに分かれています。

  • 書き込みパス: 手動アクションまたは ILM ポリシーにより、インデックスは Alibaba Cloud OSS にスナップショット化されます。storage=shared_cache パラメーターでマウントされると、インデックスは部分マウントモードになり、データは Alibaba Cloud OSS に残ったまま、アーカイブデータノードはメタデータのみをロードします。

  • クエリパス:アーカイブデータノードは、まずローカルの共有キャッシュで必要なデータブロックを確認します。キャッシュヒットの場合、結果を直接返し、パフォーマンスはローカルデータと同等です。キャッシュミスの場合、必要なデータブロックを Alibaba Cloud OSS から取得し、結果を返し、将来のクエリのためにデータをキャッシュします。

共有キャッシュは、デフォルトでノードの総ディスク容量の 90% (または総容量から 100 GB を引いた値のいずれか小さい方) に設定されます。Least Recently Used (LRU) ポリシーを使用して、コールドデータブロックを追い出します。

Elasticsearch は、アクセス頻度に基づいてデータを複数の階層に分類します。検索可能スナップショットは、これらのうち最もコスト効率の高い Frozen 階層を提供します。

データ階層

ストレージメディア

特徴

Hot 階層

ローカル SSD

リアルタイムの書き込みと頻繁なクエリを処理します。高い可用性を確保するためにレプリカシャードを保持します。

Warm 階層

標準ディスク

データは書き込まれなくなりますが、中頻度のクエリには引き続き利用可能です。

Frozen 階層

OSS オブジェクトストレージ + ローカルキャッシュ

データは Alibaba Cloud OSS に存在し、アーカイブデータノードはホットデータのみをキャッシュします。ストレージコストは Hot 階層よりも大幅に低くなります。

検索可能スナップショットは、次のメカニズムを通じてコストを削減します。

  • レプリカシャードの排除:データの信頼性は Alibaba Cloud OSS のマルチレプリカメカニズムによって保証されるため、レプリカシャードは不要になります。これにより、ストレージ要件が 50% 削減され、アベイラビリティゾーン間のトラフィックコストがなくなります。

  • ストレージとコンピューティングの分離:すべてのデータは Alibaba Cloud OSS に保存されます。OSS の単価はクラウドディスクストレージよりもはるかに低く (多くの場合 10 倍以上)、アーカイブデータノードはメタデータとホットデータキャッシュのみを保存します。

  • 非常に高いデータ密度比:アーカイブデータノードは、1:1500 のメモリ対データ比を達成できます。64 GB のメモリを持つノードは、約 100 TB のアーカイブデータを管理できますが、Warm 階層の同じリソースでは約 10 TB しかサポートできません。

ユースケース

  • ログのアーカイブ:古いログを Frozen 階層に移行して、検索機能を維持しながらストレージコストを削減します。

  • コンプライアンスと監査:コンプライアンス目的でデータを低コストで長期保存し、オンデマンドで取得します。

  • 履歴データ分析:高価な高性能ストレージを占有することなく、アクセス頻度の低い履歴データを分析します。

関連ドキュメント