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 のインストール
ECS インスタンスに接続します。
詳細については、パスワードまたはキーを使用した Linux インスタンスへの接続をご参照ください。
Node.js をインストールします。
インストール パッケージをダウンロードします。
wget https://nodejs.org/dist/v16.18.0/node-v16.18.0-linux-x64.tar.xzパッケージを解凍します。
tar -xf node-v16.18.0-linux-x64.tar.xz環境変数を設定します。
環境変数を一時的に有効にする場合は、次のコマンドを実行します。
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
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> | 移行するデータを格納するために使用されるオンプレミス パス。例: 重要 オンプレミス マシンにデータを移行すると、elasticsearch-dump は指定されたパスに宛先ファイルを自動的に生成します。そのため、オンプレミス マシンにデータを移行する前に、宛先ファイルの名前が関連ディレクトリ内で一意であることを確認する必要があります。 |
<YourQuery> | クエリ ステートメント。例: |
FAQ
Q: Error: getaddrinfo ENOTFOUND elastic というエラーが報告された場合はどうすればよいですか?

A: HTTP 認証パスワードに特殊文字が含まれています。その結果、URL 解析エラーが発生します。この問題を解決するには、HTTP 認証ファイルを追加する必要があります。
認証ファイル
auth.iniに Elasticsearch クラスタにアクセスするためのユーザー名とパスワードを入力します。例:user=elastic password="Es#123456"説明パスワードは二重引用符 (") で囲む必要があります。
次のコマンドを実行し、
--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 コンソールにログインし、ユーザーを作成し、必要な権限をユーザーに付与してから、新しいユーザーをデータ移行に使用します。