Elasticsearch數據遷移工具elasticdump工具

這兩天公司要把一部分es數據導入到新的es中,於是就找到了這樣一個方便快捷的工具,自己總結了一下使用方法:

1. 工具安裝

wget https://nodejs.org/dist/v8.11.2/node-v8.11.2-linux-x64.tar.xz

tar xf node-v8.11.2-linux-x64.tar.xz

mv node-v8.11.2-linux-x64 /usr/local

ln -s /usr/local/node-v8.11.2-linux-x64/bin/npm /usr/local/bin/npm

ln -s /usr/local/node-v8.11.2-linux-x64/bin/node /usr/local/bin/node

npm init -f

npm install elasticdump

# 因爲我只用一次,所以這裏沒有安裝到全局,需要到node_modules目錄下才能找到 elasticdump , 我安裝的位置如下:

/usr/local/node-v8.11.2-linux-x64/node_modules/elasticdump/bin/elasticfump

2. 工具使用

'#拷貝analyzer分詞
elasticdump \
  --input=http://production.es.com:9200/my_index \
  --output=http://staging.es.com:9200/my_index \
  --type=analyzer
'#拷貝映射
elasticdump \
  --input=http://production.es.com:9200/my_index \
  --output=http://staging.es.com:9200/my_index \
  --type=mapping
'#拷貝數據
elasticdump \
  --input=http://production.es.com:9200/my_index \
  --output=http://staging.es.com:9200/my_index \
  --type=data

3. 注意事項

3.1 

# 注意 elasticdump 提供給了--httpAuthFile 參數來做認證
--httpAuthFile      When using http auth provide credentials in ini file in form
                    `user=<username>
                    password=<password>`

# 只需要寫一個ini文件 ,文件中寫入用戶名和密碼就可以了
# 這裏其實還有另外一個好的方法
# 在--input參數和--output參數的的url中添加賬號密碼
# 例如
elasticdump \
  --input=http://prod-username:[email protected]:9200/my_index \
  --output=http://stage-username:[email protected]:9200/my_index \
  --type=data

3.2 如果網絡情況不好,或者沒有網絡還可以先備份到文件:

# 備份索引數據到文件裏:
elasticdump \
  --input=http://production.es.com:9200/my_index \
  --output=/data/my_index_mapping.json \
  --type=mapping
elasticdump \
  --input=http://production.es.com:9200/my_index \
  --output=/data/my_index.json \
  --type=data

# 備份到標準輸出,且進行壓縮(這裏有一個需要注意的地方,我查詢索引信息有6.4G,用下面的方式備份後得到一個789M的壓縮文件,這個壓縮文件解壓後有19G):
elasticdump \
  --input=http://production.es.com:9200/my_index \
  --output=$ \
  | gzip > /data/my_index.json.gz

# 把一個查詢結果備份到文件中
elasticdump \
  --input=http://production.es.com:9200/my_index \
  --output=query.json \
  --searchBody '{"query":{"term":{"username": "admin"}}}'
# 將備份文件的數據導入ES
elasticdump \
  --input=./data.json \
  --output=http://es.com:9200 

3.3、把數據導入到es中

elasticdump --input=face201809_index.json --output=http://es01:9200/face --type=mapping

elasticdump --input=face201809_data.json --output=http://es01:9200/face --type=data

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章