オープンソースの 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のインストール
-
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
使用例
パスワードに特殊文字 (例:#、$、@) が含まれている場合、URL 文字列が正しく認識されず失敗する可能性があります。 --httpAuthFile を使用した解決方法については、「よくある質問とトラブルシューティング」セクションをご参照ください。
クラスター間でのデータ移行 (クラウド間)
インデックスを完全に移行するには、設定、マッピング、データの順にコマンドを実行します。
-
インデックス設定を移行します:
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>"
ローカルファイルからのインポート (復元)
ドキュメントを復元します:
elasticdump --input=<YourLocalFile> --output=http://"<UserName>:<YourPassword>"@<YourEsHost>/<YourEsIndex> --type=data
パラメータリファレンス
|
パラメータ |
説明 |
|
|
ソースと宛先。 クラスター URL またはローカルファイルパスを指定できます。 重要
ローカルファイルへエクスポートする場合、elasticsearch-dump は指定されたパスにファイルを作成します。 宛先ディレクトリ内で宛先ファイル名が一意であることを確認してください。 |
|
<YourEsHost>/<OtherEsHost> |
Elasticsearch クラスターのエンドポイント (内部またはパブリック) (例: |
|
<UserName>/<OtherName> |
クラスターのユーザー名 (デフォルトは |
|
<YourPassword>/<OtherPassword> |
クラスターのパスワード。 |
|
|
移行のタイプ: |
|
|
Query DSL を使用してデータをフィルタリングします。 例: |