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

Elasticsearch:elasticsearch-dump を使用したデータの移行

最終更新日:Jan 11, 2025

elasticsearch-dump ツールを使用して、Alibaba Cloud Elasticsearch クラスタ間、またはオンプレミス マシンと Alibaba Cloud Elasticsearch クラスタ間で、インデックスの設定、マッピング、およびドキュメントを移行できます。このトピックでは、elasticsearch-dump のインストール方法と使用方法について説明します。

背景情報

elasticsearch-dump は、Elasticsearch データの移行に使用されるオープンソース ツールです。詳細については、elasticsearch-dump の公式ドキュメントをご参照ください。

前提条件

  • Alibaba Cloud Elasticsearch クラスタが作成されている。詳細については、Alibaba Cloud Elasticsearch クラスタの作成をご参照ください。

  • 宛先の Alibaba Cloud Elasticsearch クラスタで自動インデックス作成機能が有効になっているか、Alibaba Cloud Elasticsearch クラスタにインデックスが作成されている。自動インデックス作成機能の有効化方法の詳細については、YML ファイルの設定をご参照ください。

  • Elastic Compute Service (ECS) インスタンスが作成されている。ECS インスタンスは、elasticsearch-dump のインストールに使用されます。詳細については、ウィザードを使用したインスタンスの作成をご参照ください。

ユースケース

elasticsearch-dump は、インデックス数が少ないシナリオで少量のデータを移行するために使用されます。

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

説明

ソースまたは宛先の Alibaba Cloud Elasticsearch クラスタにアクセスするために使用されるパスワードに #$ などの特殊文字が含まれている場合、リクエストは Alibaba Cloud Web Application Firewall (WAF) によってブロックされ、関連コマンドの実行後にエラーが報告されます。報告されたエラーとトラブルシューティング方法の詳細については、FAQ をご参照ください。

Alibaba Cloud Elasticsearch クラスタへのデータの移行

  • インデックスの設定を移行する

    elasticdump --input=http://"<UserName>:<YourPassword>"@<YourEsHost>/<YourEsIndex> --output=http://"<OtherName>:<OtherPassword>"@<OtherEsHost>/<OtherEsIndex> --type=settings
  • インデックスのマッピングを移行する

    elasticdump --input=http://"<UserName>:<YourPassword>"@<YourEsHost>/<YourEsIndex> --output=http://"<OtherName>:<OtherPassword>"@<OtherEsHost>/<OtherEsIndex> --type=mapping
  • インデックスのドキュメントを移行する

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

オンプレミス マシンへのデータの移行

  • インデックスの設定を移行する

    elasticdump --input=http://"<UserName>:<YourPassword>"@<YourEsHost>/<YourEsIndex> --output=<YourLocalFile> --type=settings
  • インデックスのマッピングを移行する

    elasticdump --input=http://"<UserName>:<YourPassword>"@<YourEsHost>/<YourEsIndex> --output=<YourLocalFile> --type=mapping
  • インデックスのドキュメントを移行する

    elasticdump --input=http://"<UserName>:<YourPassword>"@<YourEsHost>/<YourEsIndex> --output=<YourLocalFile> --type=data
  • クエリに基づいてデータを移行する

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

オンプレミス マシンから Alibaba Cloud Elasticsearch クラスタへのデータの復元

インデックスのドキュメントを復元する

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

その他のデータ移行シナリオの詳細については、elasticsearch-dump の公式ドキュメントをご参照ください。

次の表は、上記の例で使用されているパラメータについて説明しています。

パラメータ

説明

<YourEsHost>/<OtherEsHost>

ソースまたは宛先の Alibaba Cloud Elasticsearch クラスタの内部エンドポイントまたはパブリック エンドポイント。Alibaba Cloud Elasticsearch クラスタの内部エンドポイントまたはパブリック エンドポイントは、クラスタの [基本情報] ページから取得できます。詳細については、クラスタの基本情報の表示をご参照ください。

説明

elasticsearch-dump がインストールされているサーバーが、ソースと宛先の Elasticsearch クラスタと同じ仮想プライベート クラウド (VPC) 内にある場合は、内部エンドポイントを使用できます。そうでない場合は、パブリック エンドポイントを使用し、パブリック IP アドレス ホワイトリストを設定する必要があります。詳細については、Elasticsearch クラスタのパブリックまたはプライベート IP アドレス ホワイトリストの設定をご参照ください。

<UserName>/<OtherName>

ソースまたは宛先の Alibaba Cloud Elasticsearch クラスタにアクセスするために使用されるユーザー名。Alibaba Cloud Elasticsearch クラスタのデフォルトのユーザー名は elastic です。

<YourPassword>/<OtherPassword>

ソースまたは宛先の Alibaba Cloud Elasticsearch クラスタにアクセスするために使用されるパスワード。パスワードは、クラスタの作成時に指定します。パスワードを忘れた場合は、リセットできます。パスワードのリセット手順と注意事項については、Elasticsearch クラスタのアクセス パスワードのリセットをご参照ください。

<YourEsIndex>/<OtherEsIndex>

ソースまたは宛先インデックスの名前。

<YourLocalFile>

移行するデータを格納するために使用されるオンプレミス パス。例: /data/test.json

重要

オンプレミス マシンにデータを移行すると、elasticsearch-dump は指定されたパスに宛先ファイルを自動的に生成します。そのため、オンプレミス マシンにデータを移行する前に、宛先ファイルの名前が関連ディレクトリ内で一意であることを確認する必要があります。

<YourQuery>

クエリ ステートメント。例: {\"query\":{\"term\":{\"_id\":\"100\"}}}

FAQ

Q: Error: getaddrinfo ENOTFOUND elastic というエラーが報告された場合はどうすればよいですか?

image.png

A: HTTP 認証パスワードに特殊文字が含まれています。その結果、URL 解析エラーが発生します。この問題を解決するには、HTTP 認証ファイルを追加する必要があります。

  1. 認証ファイル auth.ini に Elasticsearch クラスタにアクセスするためのユーザー名とパスワードを入力します。例:

    user=elastic
    password="Es#123456"
    説明

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

  2. 次のコマンドを実行し、--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 というエラーが報告された場合はどうすればよいですか?

A: elasticsearch-dump プラグインは、特殊文字を含むユーザー名とパスワードを解析できません。Alibaba Cloud Elasticsearch クラスタのユーザー名またはパスワードに特殊文字が含まれている場合、システムは上記のエラーを報告します。次のいずれかの方法を使用して、問題をトラブルシューティングできます。

  • 方法 1: ユーザー名またはパスワードの特殊文字を削除して、ユーザー名またはパスワードを変更します。

  • 方法 2: クラスタの Kibana コンソールにログインし、ユーザーを作成し、必要な権限をユーザーに付与してから、新しいユーザーをデータ移行に使用します。