ESデータのインポートとエクスポート

elasticdump を使用してデータをインポートおよびエクスポートする

1. elasticdump をインストールするには、ターミナルで「1 npm install elasticdump -g -g」と入力し、グローバルに利用できることを示します。ターミナルで直接 elasticdump --version と入力します。次のように、バージョン情報が表示されれば、インストールは成功です
1 2 C:\Users\T470s>elasticdump --バージョン6.3.3




 2. 一般的に使用されるインポートおよびエクスポート方法
 1. インデックス内のデータをローカルにエクスポートする
1 elasticdump --input=http://localhost:9200/demo --output=D:/ES/date/demo.json
、デモはインデックスです。
 2. ローカル データを es
1 elasticdump にインポートします。 --input=D:/ES/date/demo.json --output=http://localhost:9200/demo1
 3. es を別の es
1 elasticdump --input =httpにインポートします。 ://ip:9200/demo --output=http://127.0.0.1:9200/demo
 4. 単語分割によるインポート 前書き
: 会社の実行中のプロジェクトでは、テスト環境と正式環境の ES をセットアップする必要があります。そこに保存されているデータがテスト環境の ES サーバーにインポートされます。ローカル Windows システムを使用して実現します。
1. 環境準備
elasticdumpはnodejs環境に依存するため、nodejsの依存環境をダウンロードする必要がありますnodejs公式サイトにアクセスしてパッケージを直接インストールしますmsiインストーラーをダウンロードしましたインストール後、環境変数が設定されますcmd または Powershell で直接 elasticdump をダウンロードするだけです:
1 npm install elasticdump

2. 運用環境をテスト環境にエクスポートします。
1) ワード ブレーカーをエクスポートします。ワード ブレーカーをエクスポートするときは特に注意してください。インデックスに従って 1 つずつインポートすることしかできず、すべてエクスポートすることはできません。すべてエクスポートするとエラーが発生します。インデックスが存在しません: 1 elasticdump
--input =http://ip:9200 --output=http://127.0.0.1:9200/ --type=analyzer --all=true  
すべてのエクスポートとインポートのコマンドは次のようになります。
1 エラーが発生しました => {"root_cause ":[{"type":"action_request_validation_Exception","re​​ason":"検証に失敗しました: 1: インデックスがありません;"}],"type":"action_request_validation_Exception" , "reason":"Validation Failed: 1:index is missing missing;"}
 
したがって、後でインデックスごとに個別にインポートできます:
1
2
3 elasticdump --input=http://ip:9200/applog --output=http: //127.0.0.1:9200/applog --type =analyzer
elasticdump --input=http://ip:9200/cms_article --output=http://127.0.0.1:9200/cms_article --type=analyzer
elasticdump --input=http://ip:9200/followup --output=http://127.0.0.1:9200/followup --type=analyzer
ピット: 注ぐときにインデックスがいくつあるかわかりませんもう一度、インデックスの名前を決定するにはどうすればよいですか?
ここでは、すべてのマッピングをローカルに直接エクスポートし、インデックスの名前を見つけて、単語セグメンテーションをインポートします。
1 elasticdump --input=D:/mapping.json --output=http://127.0.0.1:9200 / - -all=true --type=mapping
疑問: 現在、ここにはインデックスが 3 つしかありませんが、複数ある場合はどうすればよいでしょうか? 100 を超える場合?
2) マッピングのエクスポート
マッピングは、直接コマンドでインポートおよびエクスポートできます:
1 elasticdump --input=http://ip:9200/ --output=http://127.0.0.1:9200/ --all =true --type=mapping
3) すべてのデータをエクスポート 各インデックスのデータを
一度にインポートできます:
1 elasticdump --input=http://ip:9200/ --output=http://127.0.0.1 :9200 / --all=true --type=data
3、概要
1)、アナライザーがインポートされていない場合はどうなりますか?
データとマッピングのみをインポートすると、データがインポートされてマッピングが変更され、最終結果には単語の分割効果がなくなることを試してみました。
2)、マッピングをインポートしない場合、単語の分割効果はありません。
3) 単語分割エラーの結果を防ぐために、アナライザー、マッピング、データの順序でインポートするのが最善です。

順番にインポート: アナライザー、マッピング、データ

ESデータのエクスポート

// インデックスのエクスポート

// インデックス マッピングを .json ファイルにエクスポート

elasticdump \
  --input=http://production.es.com:9200/demo \
  --output=/data/demo.json \
  --type=mapping

//すべてのインデックスをエクスポートする

elasticdump --input=http://ip:9200/ --output=http://127.0.0.1:9200/ --all=true --type=mapping

// データのエクスポート

// インデックスのすべてのデータを .json ファイルにエクスポートします

elasticdump \
  --input=http://production.es.com:9200/demo \
  --output=/data/demo.json \
  --type=data

//すべてのデータをエクスポートする

elasticdump --input=http://ip:9200/ --output=http://127.0.0.1:9200/ --all=true --type=data

// トークナイザーのエクスポート

//トークナイザーをエクスポートします。トークナイザーをエクスポートするときは特に注意してください。インポートできるのはインデックスに従って 1 つずつのみであり、すべてをインポートすることはできません。すべてをエクスポートすると、インデックスが存在しないというエラーが発生します。 //インデックスごとに個別にインポートするように変更します

elasticdump --input=http://ip:9200/applog --output=http://127.0.0.1:9200/applog --type=analyzer
elasticdump --input=http://ip:9200/cms_article --output=http://127.0.0.1:9200/cms_article --type=analyzer
elasticdump --input=http://ip:9200/followup --output=http://127.0.0.1:9200/followup --type=analyzer

ESデータインポート

  • ローカルファイルからデータをインポートする

elasticdump  --input=/data/demo.json --output=http://localhost:9200/demo1

es を別の es にインポートする

elasticdump --input=http://ip:9200/demo --output=http://127.0.0.1:9200/demo

#!/usr/bin/env bash

array=(“full_vehicle_portrait” “latest_car_history_trail_dt” “vehicle_abnormal_monitor” “gantry_transaction-20200914” “vehicle_abnormal_summary”)
for(( i=0;i< KaTeX 解析エラー: 予期された '}'、位置 2 で '#' を取得しました: {#̲array [@]};i++))… {array[i]}
#创建インデックス
curl -X PUT 'http://cdh173:9200/$VAR1?pretty'

elasticdump
–input=http://33.69.6.95:9200/ array [ i ] − − Output = http : / / cdh 219 : 9200 / {array[i]} \ --output=http://cdh219:9200/ああ[ i ] _ _ _ 出力_ _ _ _=うーん_:// c d h 219:9200/ {array[i]}
–type=analyzer
elasticdump
–input=http://33.69.6.95:9200/array [ i ] − − Output = http : / / cdh 219 : 9200 / {array[i]} \ --output=http://cdh219:9200/ああ[ i ] _ _ _ 出力_ _ _ _=うーん_:// c d h 219:9200/ {array[i]}
–type=settings
elasticdump
–input=http://33.69.6.95:9200/array [ i ] − − Output = http : / / cdh 219 : 9200 / {array[i]} \ --output=http://cdh219:9200/ああ[ i ] _ _ _ 出力_ _ _ _=うーん_:// c d h 219:9200/ {配列[i]}
–type=mappingcc

elasticdump --size=200
–input=http://33.69.6.95:9200/ array [ i ] − − Output = http : / / cdh 219 : 9200 / {array[i]} \ --output=http:/ /cdh219:9200/ああ[ i ] _ _ _ 出力_ _ _ _=うーん_:// c d h 219:9200/ {array[i]}
–type=データ
完了

es に多数のインデックスがある場合、それらを 1 つずつ実行するには時間がかかります。どうすればよいですか? もちろんシェルスクリプトが思い浮かびます。
スクリプト名は次のとおりです: esExportOrInput.sh
#!/bin/shindex_name
=$
1index_data=$1"_data"
index_settings=$1"_settings"
echo "実行開始"

インデックスマッピングデータのエクスポート

./elasticdump --input=http://source:9200/インデックス名 / − − 出力 = 。/インデックス名/ --output=./デックス_ _/出力_ _ _ _=./インデックス名.json --type=mapping
./elasticdump --input=http://source:9200/インデックス名 / − − 出力 = 。/インデックス名/ --output=./デックス_ _/出力_ _ _ _=./index_settings.json --type=設定

インデックスデータのエクスポート

./elasticdump --input=http://source:9200/インデックス名 / − − 出力 = 。/インデックス名/ --output=./デックス_ _/出力_ _ _ _=./index_data.json --type=data --limit=1000

#インデックスのインポート マッピングデータの
エコー "対象サービスのインデックス開始の削除:" indexnamecurl − XDELETE http://target:9200/index_namecurl -XDELETE http://target:9200/デックス_ _です_X削除http _ _ _ _://ターゲット_ _ _ _ _:9200/ index_name
echo "対象サービスのインデックス終了を削除します: "indexnamesleep 3 echo "3 秒間待ちます..." ./elasticdump − - input = ./index_name sleep 3 echo "3 秒間待ちます..." ./ elasticdump - -input=./デックス_ _am es le e p 3 ec h o " 3待っください... " ./ elasticdump _ _ _ _入力_ _ _=./index_settings.json --output=http://target:9200/indexname / − − type = settings 。/ elasticdump − − 入力 = 。/index_name/ --type=settings ./elasticdump --input=./デックス_ _/タイプ_ _ _=設定./最新ダンプ_ _ _ _ _ _ _ _ _ _ _ _入力_ _ _=./インデックス名.json --output=http://target:9200/インデックス名 / − − タイプ = マッピング 。/ elasticdump − − 入力 = 。/ インデックス名/ --type=mapping ./elasticdump --input=./デックス_ _/タイプ_ _ _=マッピング/弾性ダンプ_ _ _ _ _ _ _ _ _ _ _ _入力_ _ _=./index_data.json --output=http://target:9200/KaTeX 解析エラー: 'EOF' が予期されましたが、位置 39 で '#' を取得しました: …a --limit=1000 #̲生成されたファイルをクリアします rm -f ..インデックス名.json
rm -f ./インデックス設定.json rm − f ./ インデックス設定.json rm -f ./デックス_ _sEtt in g s _ j so n r mf ./index_data.json #
生成されたファイルをクリア
echo "インデックス" $index_name" 実行が完了しました"

実行中に 1 つの変数を渡す必要があります。これはインデックス名index_nameです。

リマインダー:
1. このスクリプトは、elasticdump がインストールされているサーバーでのみ使用できます。スクリプト ディレクトリは /root/node_modules/elasticdump/bin にあります。 2. デフォルトでは 100 個のバッチをエクスポートおよびインポートしますが、-limit の数を追加できます
。ページごとのエントリを使用して、各ページ数をカスタマイズします。
3. インポートするときは、設定のファイル インポートを制限し、マッピングのインポートを実行する必要があります。そうしないと、uuid の一意の ID が設定に引き継がれるため、競合が発生します。
例: bum_user インデックスのデータをテスト環境からストレス テスト サーバー ターゲットに移行する場合は、コマンド
./esExportOrInput.sh bum_userを実行するだけです。

宿題を残すと、ソースサーバーとターゲットサーバーの間で動的パラメータを転送でき、ユニバーサル適応を実現できます。興味がある場合は、書き直してください。

おすすめ

転載: blog.csdn.net/qq_44912603/article/details/129004635