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

:OSS を使用して、セルフマネージド Elasticsearch クラスターから Alibaba Cloud Elasticsearch クラスターにデータを移行する

最終更新日:Jan 11, 2025

オブジェクトストレージサービス(OSS)に保存されているスナップショットを使用して、セルフマネージド Elasticsearch クラスターから Alibaba Cloud Elasticsearch クラスターにデータを移行できます。 データを移行するには、スナップショット API を呼び出して、セルフマネージド Elasticsearch クラスターのスナップショットを作成し、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 クラスターを準備します。

    Alibaba Cloud Elastic Compute Service(ECS)インスタンスに Elasticsearch クラスターをデプロイすることをお勧めします。 詳細については、「Installing and Running Elasticsearch」をご参照ください。

    説明

    セルフマネージド Elasticsearch クラスターをデプロイするには、Alibaba Cloud Elasticsearch クラスターと同じ仮想プライベートクラウド(VPC)内の Alibaba Cloud ECS インスタンスを使用することをお勧めします。 セルフマネージドサーバーを使用してクラスターをデプロイする場合、ネットワーク接続の問題が発生する可能性があります。

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

  2. OSS をアクティブ化し、セルフマネージド Elasticsearch クラスターをホストする ECS インスタンスが存在するリージョンにバケットを作成します。

    詳細については、「OSS をアクティブ化する」および「バケットを作成する」をご参照ください。

    重要

    バケットのストレージクラスは Standard である必要があります。 Elasticsearch は Archive ストレージクラスをサポートしていません。

  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 プラグインのインストールパッケージの入手方法の詳細については、「FAQ」をご参照ください。

  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 クラスターをホストする ECS インスタンスを起動します。

    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 シークレット。 AccessKey シークレットの取得方法の詳細については、「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. 表示されるページの [console] タブで、次のコマンドを実行して、セルフマネージド 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 クラスターにデータをリストアする

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

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"
            }
          }
        ]
      }
    }

FAQ

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

A:必要なバージョンの elasticsearch-repository-oss プラグインのインストールパッケージは、GitHub からダウンロードできます。 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 になります。