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

:OSS を使用して自己管理 Elasticsearch クラスターから Alibaba Cloud Elasticsearch クラスターにデータを移行する

最終更新日:Nov 09, 2025

Object Storage Service (OSS) スナップショットを使用して、自己管理 Elasticsearch クラスターから Alibaba Cloud Elasticsearch クラスターにデータを移行できます。このプロセスでは、Elasticsearch Snapshot API を使用して自己管理データのスナップショットを作成し、そのスナップショットを OSS バケットに保存してから、データを Alibaba Cloud Elasticsearch クラスターに復元します。このトピックでは、この移行を実行する方法について説明します。

背景情報

OSS を使用すると、大量のデータを自己管理 Elasticsearch クラスターから Alibaba Cloud Elasticsearch クラスターに移行できます。

手順

  1. 手順 1: 準備

    自己管理 Elasticsearch クラスターを準備し、OSS バケットと Alibaba Cloud Elasticsearch クラスターを作成します。

  2. 手順 2: elasticsearch-repository-oss プラグインをインストールする

    自己管理 Elasticsearch クラスターの各ノードに elasticsearch-repository-oss プラグインをインストールします。プラグインをインストールした後にのみ、自己管理 Elasticsearch クラスター用の OSS リポジトリを作成できます。

  3. 手順 3: 自己管理 Elasticsearch クラスターのスナップショットリポジトリを作成する

    スナップショット API を呼び出して、自己管理 Elasticsearch クラスターのスナップショットリポジトリを作成します。

  4. 手順 4: 特定のインデックスのスナップショットを作成する

    移行するインデックスのスナップショットを作成し、作成したスナップショットリポジトリにスナップショットを保存します。

  5. 手順 5: Alibaba Cloud Elasticsearch クラスターに同じスナップショットリポジトリを作成する

    Alibaba Cloud Elasticsearch クラスターの Kibana コンソールで、スナップショット API を呼び出してクラスターのスナップショットリポジトリを作成します。スナップショットリポジトリは、自己管理 Elasticsearch クラスターのスナップショットリポジトリと同じ名前である必要があります。

  6. 手順 6: 作成したスナップショットから Alibaba Cloud Elasticsearch クラスターにデータを復元する

    自己管理 Elasticsearch クラスターのスナップショットリポジトリにあるスナップショットから Alibaba Cloud Elasticsearch クラスターにデータを復元します。

  7. 手順 7: 復元結果の表示

    復元されたインデックスとインデックス内のデータを表示します。

手順 1: 準備

  1. 自己管理 Elasticsearch クラスターを準備します。

    詳細については、「Installing and Running Elasticsearch」をご参照ください。

    説明

    Alibaba Cloud Elasticsearch クラスターと同じ VPC 内の Alibaba Cloud Elastic Compute Service (ECS) インスタンスを使用して、自己管理 Elasticsearch クラスターをデプロイすることをお勧めします。自己管理サーバーを使用してクラスターをデプロイすると、ネットワーク接続の問題が発生する可能性があります。

    この例では、シングルノードの Elasticsearch V6.7.0 クラスターを使用します。実際の運用では、同じ VPC 内にある複数の ECS インスタンスを購入して、マルチノードの Elasticsearch クラスターをデプロイできます。ECS インスタンスの購入方法の詳細については、「カスタム起動タブでインスタンスを作成する」をご参照ください。

  2. OSS を有効化し、自己管理 Elasticsearch クラスターをホストする ECS インスタンスが存在するリージョンにバケットを作成します。

    詳細については、「OSS の有効化」および「バケットの作成」をご参照ください。

    重要

    バケットのストレージタイプは標準である必要があります。Elasticsearch はアーカイブストレージタイプをサポートしていません。

  3. 作成したバケットが存在するリージョンに Alibaba Cloud Elasticsearch クラスターを作成します。

    詳細については、「Alibaba Cloud Elasticsearch クラスターの作成」をご参照ください。

手順 2: elasticsearch-repository-oss プラグインをインストールする

  1. 自己管理 Elasticsearch クラスターをホストする ECS インスタンスに接続します。

    詳細については、「パスワードまたはキーを使用して Linux インスタンスに接続する」をご参照ください。

    説明

    この例では、一般ユーザを使用します。

  2. elasticsearch-repository-oss プラグインのインストールパッケージをダウンロードします。

    この例では、プラグインのバージョンは V6.7.0 で、JDK 11.0 以降が必要です。

    wget https://github.com/aliyun/elasticsearch-repository-oss/releases/download/v6.7.0/elasticsearch-repository-oss-6.7.0.zip
    説明

    別のバージョンの elasticsearch-repository-oss プラグインのインストールパッケージの入手方法の詳細については、「よくある質問」をご参照ください。

  3. インストールパッケージを、ECS インスタンス上の自己管理 Elasticsearch クラスターのインストールパスにある plugins フォルダに解凍します。

    sudo unzip -d /usr/local/elasticsearch-6.7.0/plugins/elasticsearch-repository-oss elasticsearch-repository-oss-6.7.0.zip

    コマンドを使用してプラグインをインストールすることもできます。

    sudo ./bin/elasticsearch-plugin install file:///usr/local/elasticsearch-repository-oss-6.7.0.zip
  4. 自己管理 Elasticsearch クラスターの各ノードを起動します。

    cd /usr/local/elasticsearch-6.7.0
    ./bin/elasticsearch -d

手順 3: 自己管理 Elasticsearch クラスターのスナップショットリポジトリを作成する

自己管理 Elasticsearch クラスターをホストする ECS インスタンスに接続し、次のコマンドを実行してスナップショットリポジトリを作成します。

sudo curl -H "Content-Type: application/json" -XPUT localhost:9200/_snapshot/<yourBackupName> -d' {"type": "oss", "settings": { "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com",  "access_key_id": "<yourAccesskeyId>",  "secret_access_key":"<yourAccesskeySecret>", "bucket": "<yourBucketName>", "compress": true }}'

パラメーター

説明

<yourBackupName>

リポジトリの名前。カスタマイズできます。

type

リポジトリのタイプ。このパラメーターを oss に設定します。

endpoint

OSS バケットのエンドポイント。詳細については、「リージョンとエンドポイント」をご参照ください。

説明

自己管理 Elasticsearch クラスターをホストする ECS インスタンスが OSS バケットと同じリージョンにある場合は、OSS バケットの内部エンドポイントを使用します。それ以外の場合は、OSS バケットのパブリックエンドポイントを使用します。

access_key_id

OSS バケットの作成に使用される Alibaba Cloud アカウントの AccessKey ID。AccessKey ID の取得方法の詳細については、「AccessKey ペアの取得方法」をご参照ください。

secret_access_key

OSS バケットの作成に使用される Alibaba Cloud アカウントの AccessKey Secret。AccessKey Secret の取得方法の詳細については、「AccessKey ペアの取得方法」をご参照ください。

bucket

OSS バケットの名前。

compress

圧縮を有効にするかどうかを指定します。有効な値:

  • true: 圧縮が有効であることを示します。

  • false: 圧縮が無効であることを示します。

成功した応答には "acknowledge":true が含まれます。

手順 4: 特定のインデックスのスナップショットを作成する

データを移行するインデックスのスナップショットを作成します。デフォルトでは、オープン状態のすべてのインデックスがスナップショットにバックアップされます。.kibana.security、または .monitoring で始まる名前のインデックスなどのシステムインデックスをバックアップしたくない場合は、バックアップするインデックスを指定できます。

重要

システムインデックスは大きなストレージ容量を占有するため、バックアップしないことをお勧めします。

curl -H "Content-Type: application/json" -XPUT localhost:9200/_snapshot/<yourBackupName>/snapshot_1?pretty -d'
{
"indices": "index1,index2"
}'

<yourBackupName> は、「手順 3: 自己管理 Elasticsearch クラスターでリポジトリを作成する」で作成したリポジトリの名前です。index1index2 は、バックアップするインデックスの名前です。成功した応答には "accepted" : true が含まれます。

スナップショットの作成中に、GET /_snapshot/<yourBackupName>/<yourSnapshotName>/_status コマンドを実行してスナップショットのステータスを表示できます。応答の state パラメーターが SUCCESS になると、スナップショットは完了です。

手順 5: Alibaba Cloud Elasticsearch クラスターに同じスナップショットリポジトリを作成する

  1. Elasticsearch クラスターの Kibana コンソールにログインし、プロンプトに従って Kibana コンソールのホームページに移動します。

    Kibana コンソールへのログイン方法の詳細については、「Kibana コンソールへのログイン」をご参照ください。

    説明

    この例では、Elasticsearch V6.7.0 クラスターを使用します。他のバージョンのクラスターでの操作は異なる場合があります。コンソールでの実際の操作が優先されます。

  2. 表示されたページの左側のナビゲーションウィンドウで、[Dev Tools] をクリックします。

  3. 表示されたページの [コンソール] タブで、次のコマンドを実行して、自己管理 Elasticsearch クラスターのスナップショットリポジトリと同じ名前のスナップショットリポジトリを作成します。

    PUT _snapshot/<yourBackupName>
    {
        "type": "oss",
        "settings": {
            "endpoint": "oss-cn-hangzhou-internal.aliyuncs.com",
            "access_key_id": "<yourAccesskeyId>",
            "secret_access_key": "<yourAccesskeySecret>",
            "bucket": "<yourBucketName>",
            "compress": true
        }
    }

    <yourBackupName><yourBucketName> を、「手順 3: 自己管理 Elasticsearch クラスターのスナップショットリポジトリを作成する」で指定したリポジトリ名とバケット名に置き換えます。

手順 6: 作成したスナップショットから Alibaba Cloud Elasticsearch クラスターにデータを復元する

説明

Elasticsearch バージョン 7.10.x および 7.17.x では、cluster.restore.ignore_revision.enabletrue に設定して、より高いパッチバージョンのスナップショットからのデータ復元を許可できます。パッチバージョンは、バージョン番号の 3 番目の数字です。たとえば、バージョン 7.10.1 では、7 がメジャーバージョン、10 がマイナーバージョン、1 がパッチバージョンです。

たとえば、実行中の Elasticsearch 7.10.0 クラスターに対して cluster.restore.ignore_revision.enabletrue に設定すると、バージョン 7.10.3 から作成されたスナップショットからデータを復元できます。次のコードは構成を提供します。

PUT _cluster/settings
{
  "persistent": {
    "cluster.restore.ignore_revision.enable": true
  }
}

手順 5: Alibaba Cloud Elasticsearch クラスターに同一のリポジトリを作成する」の手順に従います。次に、Kibana コンソールで次のコマンドを実行して、. で始まるシステムインデックスを除く、スナップショットからすべてのインデックスを復元します。

POST _snapshot/es_backup/snapshot_1/_restore
{"indices":"*,-.monitoring*,-.security_audit*","ignore_unavailable":"true"}

成功した応答には "accepted" : true が含まれます。

上記のコマンドは、スナップショット内のすべてのインデックスを復元します。復元するインデックスを指定することもできます。Alibaba Cloud Elasticsearch クラスターでは、既存のインデックスが復元したいインデックスと同じ名前を持つ場合があります。この場合、既存のインデックスのデータを上書きしたくない場合は、復元中に復元したいインデックスの名前を変更できます。

POST _snapshot/es_backup/snapshot_1/_restore
{
  "indices":"index1",
  "rename_pattern": "index(.+)",
  "rename_replacement": "restored_index_$1"
}
説明

スナップショットの作成またはデータの復元に使用されるコマンドの詳細については、「手動スナップショットの作成と手動スナップショットからのデータの復元」をご参照ください。

手順 7: 復元結果の表示

Alibaba Cloud Elasticsearch クラスターの Kibana コンソールで、次のコマンドを実行して復元結果を表示します。「手順 5: Alibaba Cloud Elasticsearch クラスターに同じスナップショットリポジトリを作成する」の手順に従って操作を実行します。

  • 復元されたインデックスの表示

    GET /_cat/indices?v

    查看恢复成功的索引

  • 復元されたインデックス内のデータの表示

    GET /index1/_search

    コマンドが正常に実行されると、次の結果が返されます。

    {
      "took" : 2,
      "timed_out" : false,
      "_shards" : {
        "total" : 5,
        "successful" : 5,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : 1,
        "max_score" : 1.0,
        "hits" : [
          {
            "_index" : "index1",
            "_type" : "_doc",
            "_id" : "1",
            "_score" : 1.0,
            "_source" : {
              "productName" : "testpro",
              "annual_rate" : "3.22%",
              "describe" : "testpro"
            }
          }
        ]
      }
    }

よくある質問

Q: 別のバージョンの elasticsearch-repository-oss プラグインのインストールパッケージを入手するにはどうすればよいですか?

A: GitHub から必要なバージョンの elasticsearch-repository-oss プラグインのインストールパッケージをダウンロードできます。GitHub が必要なバージョンのインストールパッケージを提供していない場合は、マイナーバージョンが必要なバージョンのマイナーバージョンに最も近いバージョンのインストールパッケージをダウンロードすることをお勧めします。次に、プラグインの plugin-descriptor.properties ファイルで次のパラメーターの値を変更し、ファイルを再度パッケージ化してから、プラグインをインストールします。

  • version=必要なプラグインのバージョン

  • elasticsearch.version=自己管理 Elasticsearch クラスターのバージョン

    説明

    プラグインのバージョンは、自己管理 Elasticsearch クラスターのバージョンと同じである必要があります。

  • java.version=1.8

    説明
    • Elasticsearch クラスターのバージョンが異なれば、依存する JDK のバージョンも異なります。実際の JDK バージョンは、オープンソースの Elasticsearchプラグイン によって決まります。

    • オープンソースの Elasticsearch はさまざまなクラスターバージョンを提供しており、クラスターのバージョンが異なればコンパイル方法も異なります。したがって、クラスターに elasticsearch-repository-oss プラグインをインストールする前に、クラスターのバージョンに基づいてプラグインをコンパイルおよびデバッグする必要があります。たとえば、自己管理 Elasticsearch V7.6.2 クラスターをデプロイし、必要な JDK バージョンが 1.8 以降であるとします。コンパイルとデバッグの後、プラグインは elasticsearch-repository-oss-7.6.2 になります。