elasticsearch-dump 遷移es數據 (elasticdump)


 

elasticsearch 部分查詢語句

# 獲取集群的節點列表:
curl 'localhost:9200/_cat/nodes?v'

# 列出所有索引:
curl 'localhost:9200/_cat/indices?v'

創建一個名為“customer”的索引,然后再查看所有的索引:
curl -X PUT 'localhost:9200/customer?pretty'
curl 'localhost:9200/_cat/indices?v'

如果需要用戶名和密碼登錄才可以訪問,通過下面的方式指定用戶名和密碼
# 獲取集群的節點列表:
curl --user username:password 'localhost:9200/_cat/nodes?v'
 

參考鏈接: https://blog.csdn.net/pilihaotian/article/details/52452014

 

 

 

github地址 :https://github.com/taskrabbit/elasticsearch-dump

或者 : https://www.npmjs.com/package/elasticdump

 

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 

 

 

數據遷移: 

'#拷貝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

 

# 注意 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:prod-passowrd@production.es.com:9200/my_index \
  --output=http://stage-username:stage-password@staging.es.com:9200/my_index \
  --type=data
 

 

 

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

# 備份索引數據到文件里:
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"}}}'

 

elasticdump還是非常方便的,主要是可以指定查詢條件,把查詢結果進行備份。如果按照日期進行查詢,那么就可以遷移指定之間段內的數據,

恢復數據
# 將備份文件的數據導入ES
elasticdump \
  --input=./data.json \
  --output=http://es.com:9200 

 

其實對ES了解還很少,中間可能有問題,還需要學習,就目前的了解程度,不保證上面的步驟完整,只是給大家一個大概的思路。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM