1. 程式人生 > >elasticsearch資料遷移

elasticsearch資料遷移

下面介紹兩個工具對Elasticsearch資料進行遷移:

  • elasticdump
  • elasticsearch-exporter

elasticdump

安裝步驟

yum install epel-release
yum install nodejs
yum install nodejs npm
npm install elasticdump  
  • 如果出現這個錯誤: a、沒有package.json這個檔案。可以使用npm init -f命令生成一下 b、relocation error: npm: symbol SSL_set_cert_cb, version libssl.so.10 not defined in file libss
    先安裝openssl 命令:yum install -y openssl 然後安裝ws 命令:npm install ws

如果安裝成功,elasticdump的預設路徑在node_modules/elasticdump/bin,首先開啟目錄

cd node_modules/elasticdump/bin  

執行下面語句可以把資料遷移到目標機器

./elasticdump  --input=http://192.168.1.1:9200/original --output=http://192.168.1.2:9200/newCopy --type=data 
  • input:遷出機器
  • output: 目標機器

這一步是遷移到新索引的命令,把192.168.1.1的original

索引遷移至192.168.1.2。 需要注意的是如果只使用這個命令的話,目的索引必須先手動建立一下mapping,不然遷移過去型別會自動判斷,date型別判斷成string等等

如果你很懶你不想自己建立索引,那麼你可以在執行上述命令前執行以下命令:

./elasticdump  --input=http://192.168.1.1:9200/original --output=http://192.168.1.2:9200/newCopy --type=mapping  

不一樣的地方就是--type=mapping ,意思是把原始索引originalmapping結構遷移給目標索引newCopy

如果索引很多,你還是懶得一個個去遷移,那麼你可以改用這個命令:

./elasticdump  --input=http://192.168.1.1:9200/ --output=http://192.168.1.2:9200/ --all=true  

加個--all=trueinputoutput裡不需要把索引名加上,這樣就可以自動把原機器上的所有索引遷移到目標機器

Elasticsearch-exporter

安裝步驟:

npm install nomnom  
npm install colors  
npm install elasticsearch-exporter --production  

然後執行命令指令碼

node exporter.js -a <source hostname> -b <target hostname> -p <s port> -q <t port> -i <s index> -j <t index>