ToC
Opensearchのエクスポートとインポート
OpenSearchは、リアルタイムのアプリケーションモニタリングやログ分析に利用できる検索および分析のソフトウエアです。
ベクトル検索を行うためのデータベースとして利用しています。
ベクトル化したデータのバックアップのためエクスポートとインポートが簡単にできる方法が処理がないかと探していたところ、
elaseticdumpというツールが非常に便利だったので備忘も兼ねて記事にしました。
環境構築
Opensearchのサーバー環境
今回利用するOpensearchは、ローカル環境のDocker上に構築しています。
なお、Opensearch
とOpensearch Dashboard
のバージョン2.6.0のイメージを取得しました。
docker-compose等で簡単に起動可能です。
ローカルで検証する場合でもコンテナイメージは、https
での通信がデフォルトでした。
セキュリティ強度を下げる必要もないので、そのまま使っています。
なお、サーバーの構築は、記事を参考にしました。
クライアントにelasticdumpをセットアップ
elasiticdumpの利用環境には、node
の導入が必要なため、事前にインストールしておきます。
その後、npm install elasticdump -g
でグローバルにインストールできます。非常に簡単です。
$ npm install elasticdump -g
$ elasticdump --version
6.110.0
データエクスポートとインポート
準備が整ったところで、構築済みのインデックスのデータとマッピングのエクスポートとインポートを試してみます。 コードを記載しておくことが最も早いと思いますので、コードを記載します。
# データエクスポート
NODE_TLS_REJECT_UNAUTHORIZED=0 \
elasticdump \
--input=https://[username]:[password]@localhost:9200/my-index \
--output=/workspace/my-index-data.json \
--type=data
# マッピングエクスポート
NODE_TLS_REJECT_UNAUTHORIZED=0 \
elasticdump \
--input=https://[username]:[password]@localhost:9200/my-index \
--output=/workspace/my-index-mapping.json \
--type=mapping
# マッピングインポート
NODE_TLS_REJECT_UNAUTHORIZED=0 \
elasticdump \
--input=/workspace/my-index-mapping.json \
--output=https://[username]:[password]@localhost:9200/my-index2 \
--type=mapping
# データインポート
NODE_TLS_REJECT_UNAUTHORIZED=0 \
elasticdump \
--input=/workspace/my-index-data.json \
--output=https://[username]:[password]@localhost:9200/my-index2 \
--type=data
ポイントは、NODE_TLS_REJECT_UNAUTHORIZED
を指定するところです。
今回はローカル環境でしたので緩やかな対応になっていますが、ユーザー名
と パスワード
がURLに直書きになっている点は注意が必要ですね。
より詳しい情報は、elasticdumpのGithubを参照してください。