はじめに
今回、AWS ElasticSearchからローカルのElasticSearchにデータを移行したかったのでElasticDumpを使って、試しにやってみました。
ElasticSearchはVPCからしかアクセスできなかったので、踏み台のEC2から接続しています。
注意点
※他にいい方法はたくさんありますのであくまでも一つの方法です。
- index単位なので、indexが多いと面倒です。
*
などで一括でindexをdumpするなんてこともできません。
EC2にNodeをインストール
AWS公式のNodejsインストール手順を元にnvmでインストールします。
# EC2の中
# nvmインストール
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
# nvmを有効化
. ~/.nvm/nvm.sh
# nodeのインストール
nvm install node
# Node.js が正しくインストールされ、実行されていることをテストします。
node -e "console.log('Running Node.js ' + process.version)"
ElasticDumpのインストール
# EC2の中
npm install elasticdump -g
dumpする
# EC2の中
# index一覧を確認
curl -XGET {VPCエンドポイント}/_cat/indices?v
# dumpする
elasticdump --input=http://localhost:9200/{index名} --output={ファイル名}.json
EC2からファイルをローカルにダウンロード
# ローカル
scp {ssh接続先}:{path}/{ファイル名} {ローカルのパス}
dumpファイルをインポート
# ローカル
elasticdump --input={ファイル名}.json --output=http://localhost:9200/{index名}
移行完了!