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

Elasticsearch:elasticsearch-dumpによるデータ移行

最終更新日:Aug 21, 2026

オープンソースの elasticsearch-dump ツールを使用して、Alibaba Cloud Elasticsearch クラスター間、またはオンプレミス環境とクラウド環境の間でインデックスの設定、マッピング、およびデータを移行します。

概要

elasticsearch-dump は、ある Elasticsearch インデックスから別のインデックスまたはローカルファイルへデータをエクスポートするコマンドラインツールです。

適用シーン:

  • 小規模なデータの移行。

  • 特定のインデックスの移動。

  • マッピングや設定のローカルファイルへのバックアップ。

公式ドキュメント: elasticdump

前提条件

  • ソース/宛先クラスター: Alibaba Cloud Elasticsearch クラスターが作成されていること。 詳細については、「Alibaba Cloud Elasticsearchクラスターの作成」をご参照ください。

  • 自動インデックス作成: 宛先クラスターで自動インデックス作成が有効になっているか、事前にターゲットインデックスが手動で作成されている必要があります。 詳細については、「YMLファイルの設定」をご参照ください。

  • 移行ノード: ツールを実行するために Elastic Compute Service (ECS) が必要です。

    • ECS インスタンスと Elasticsearch クラスターが同じ Virtual Private Cloud (VPC) 内にある場合は、内部エンドポイントを使用することで、より高速かつ無料でデータ転送を行えます。

    • 異なるリージョン/VPC にある場合は、パブリックエンドポイントを使用し、ECS の IP アドレスがクラスターのホワイトリストに追加されていることを確認してください。 詳細については、「IPアドレスホワイトリストの管理」をご参照ください。

elasticsearch-dumpのインストール

  1. ECS インスタンスに接続します。

  2. Node.js をインストールします。

    1. パッケージをダウンロードします:

      wget https://nodejs.org/dist/v16.18.0/node-v16.18.0-linux-x64.tar.xz
    2. 解凍して移動します:

      tar -xf node-v16.18.0-linux-x64.tar.xz
    3. 環境変数を設定します:

      • 一時的な設定 (現在のセッションのみ):

        export PATH=$PATH:/root/node-v16.18.0-linux-x64/bin/
      • 永続的な設定 (シェルプロファイルに追加):

        vim ~/.bash_profile
        export PATH=$PATH:/root/node-v16.18.0-linux-x64/bin/
        source ~/.bash_profile
  3. elasticsearch-dump をインストールします:

    npm install elasticdump -g

使用例

重要

パスワードに特殊文字 (例:#$@) が含まれている場合、URL 文字列が正しく認識されず失敗する可能性があります。 --httpAuthFile を使用した解決方法については、「よくある質問とトラブルシューティング」セクションをご参照ください。

クラスター間でのデータ移行 (クラウド間)

インデックスを完全に移行するには、設定、マッピング、データの順にコマンドを実行します。

  1. インデックス設定を移行します:

    elasticdump --input=http://"<UserName>:<YourPassword>"@<YourEsHost>/<YourEsIndex> --output=http://"<OtherName>:<OtherPassword>"@<OtherEsHost>/<OtherEsIndex> --type=settings
  2. マッピングを移行します:

    elasticdump --input=http://"<UserName>:<YourPassword>"@<YourEsHost>/<YourEsIndex> --output=http://"<OtherName>:<OtherPassword>"@<OtherEsHost>/<OtherEsIndex> --type=mapping
  3. ドキュメント (データ) を移行します:

    elasticdump --input=http://"<UserName>:<YourPassword>"@<YourEsHost>/<YourEsIndex> --output=http://"<OtherName>:<OtherPassword>"@<OtherEsHost>/<OtherEsIndex> --type=data

ローカルファイルへのエクスポート (バックアップ)

  1. 設定をエクスポートします:

    elasticdump --input=http://"<UserName>:<YourPassword>"@<YourEsHost>/<YourEsIndex> --output=<YourLocalFile> --type=settings
  2. マッピングをエクスポートします:

    elasticdump --input=http://"<UserName>:<YourPassword>"@<YourEsHost>/<YourEsIndex> --output=<YourLocalFile> --type=mapping
  3. ドキュメント (データ) をエクスポートします:

    elasticdump --input=http://"<UserName>:<YourPassword>"@<YourEsHost>/<YourEsIndex> --output=<YourLocalFile> --type=data
  4. クエリに基づいてデータをエクスポートします:

    elasticdump --input=http://"<UserName>:<YourPassword>"@<YourEsHost>/<YourEsIndex> --output=<YourLocalFile> --searchBody="<YourQuery>"

ローカルファイルからのインポート (復元)

ドキュメントを復元します:

elasticdump --input=<YourLocalFile> --output=http://"<UserName>:<YourPassword>"@<YourEsHost>/<YourEsIndex> --type=data

パラメータリファレンス

パラメータ

説明

--input / --output

ソースと宛先。 クラスター URL またはローカルファイルパスを指定できます。

重要

ローカルファイルへエクスポートする場合、elasticsearch-dump は指定されたパスにファイルを作成します。 宛先ディレクトリ内で宛先ファイル名が一意であることを確認してください。

<YourEsHost>/<OtherEsHost>

Elasticsearch クラスターのエンドポイント (内部またはパブリック) (例:es-cn-abc.public.elasticsearch.aliyuncs.com:9200)。 詳細については、「クラスターの基本情報の表示」をご参照ください。

<UserName>/<OtherName>

クラスターのユーザー名 (デフォルトは elastic)。

<YourPassword>/<OtherPassword>

クラスターのパスワード。

--type

移行のタイプ:settingsmapping、またはdata

--searchBody

Query DSL を使用してデータをフィルタリングします。 例: {"query":{"term":{"user":"admin"}}}

よくある質問とトラブルシューティング

Q:Error: getaddrinfo ENOTFOUND elastic

[root@i-xxx ~]# elasticdump --input=http://"xxx.public.elasticsearch.aliyuncs.com:9200/customers --output=/root/customers.json --type=settings
Tue, 04 Jul 2023 08:42:53 GMT | starting dump
(node:25448) NOTE: We are formalizing our plans to enter AWS SDK for JavaScript (v2) into maintenance mode in 2023.

Please migrate your code to use AWS SDK for JavaScript (v3).
For more information, check the migration guide at https://a.co/7PzMCcy
(Use `node --trace-warnings ...` to show where the warning was created)
Tue, 04 Jul 2023 08:43:13 GMT | Error Emitted => getaddrinfo ENOTFOUND elastic
Tue, 04 Jul 2023 08:43:13 GMT | Error Emitted => getaddrinfo ENOTFOUND elastic
Tue, 04 Jul 2023 08:43:13 GMT | Total Writes: 0
Tue, 04 Jul 2023 08:43:13 GMT | dump ended with error (get phase) => Error: getaddrinfo ENOTFOUND elastic

原因: 通常、パスワードに特殊文字 (#!@ など) が含まれており、URL が正しく解釈されない場合に発生します。

解決方法: 認証ファイルを使用します。

  1. auth.ini という名前のファイルを作成します:

    user=elastic
    password="Your#Complex$Password"
    説明

    パスワードは二重引用符 (") で囲む必要があります。

  2. elasticdump--httpAuthFile フラグを使用して実行します:

    elasticdump --input=http://es-*****.public.elasticsearch.aliyuncs.com:9200/customers --output=/root/customers.json --httpAuthFile=/root/auth.ini --type=settings

Q:URIError: URI malformed

原因: elasticsearch-dump は、特殊文字を含むユーザー名とパスワードを解析できません。

解決方法:

  • 方法1: ユーザー名またはパスワードから特殊文字を削除します。

  • 方法2: Kibana コンソールにログインし、必要な権限を持つユーザーを作成して、移行に使用します。