使用elasticdump導入導出數據


一、安裝elasticdump

終端中輸入 

1
npm install elasticdump -g

-g表示全局可用,直接在終端輸入 elasticdump --version,出現版本信息即表示安裝成功,如下

1
2
C:\Users\T 470 s>elasticdump --version
6.3 . 3  

 

二、常用的導入導出方法

 1、將索引中的數據導出到本地

1
elasticdump  --input=http://localhost: 9200 /demo --output=D:/ES/date/demo.json

 其中,demo是索引。

 2、將本地數據導入es中

1
elasticdump  --input=D:/ES/date/demo.json --output=http://localhost: 9200 /demo 1

 3、將es導入另一個es

1
elasticdump --input=http://ip: 9200 /demo --output=http:// 127.0 . 0.1: 9200 /demo

 4、含有分詞的導入

轉自:https://blog.csdn.net/Wang_Ocean/article/details/90267797

前文:公司正在運行的項目需要搭一個測試環境,需要將正式環境的ES里面存儲的數據導入到該測試環境的ES服務器里面。使用本地的windows系統來實現。
1,環境准備
因為elaticdump 依賴於nodejs的環境,需要下載nodejs的相關依賴環境,去nodejs官網直接安裝包,我下載的是msi安裝程序,安裝好之后會直接配置好環境變量,在cmd或者Powershell直接下載elaticdump 即可:

1
npm install elasticdump

 

2,生產環境導出到測試環境
1)導出分詞器,導出分詞器的時候要特別注意,我們只能根據索引單個導入,不能全部導出,全部導出會出現索引不存在的錯誤:

1
elasticdump --input=http://ip: 9200  --output=http:// 127.0 . 0.1: 9200 / --type=analyzer -- all =true  

該全部導出導入的命令會如下錯誤:

1
Error Emitted => { "root_cause" :[{ "type" : "action_request_validation_exception" , "reason" : "Validation Failed: 1: index is missing;" }], "type" : "action_request_validation_exception" , "reason" : "Validation Failed: 1: index is 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

坑:再倒入的時候我並不知道到底有多少個索引,如何確定索引的名稱?
這里我是直接先導出所有映射mapping到本地,然后找到索引的名稱再到各導入分詞:

1
elasticdump --input=D:/mapping.json --output=http:// 127.0 . 0.1: 9200 / -- all =true --type=mapping

疑惑:我這里的索引目前只有三個,如果是多個怎么處理?超過100?

2)導出映射mapping
映射mapping可以直接全部導入導出,直接命令:

1
elasticdump --input=http://ip: 9200 / --output=http:// 127.0 . 0.1: 9200 / -- all =true --type=mapping

3)導出全部數據data
每個索引下的數據可以全部一次性導入:

1
elasticdump --input=http://ip: 9200 / --output=http:// 127.0 . 0.1: 9200 / -- all =true --type=data

3,總結
1),如果不導入analyzer會怎么樣?
我試過如果只導入data和mapping,則數據會導入,mapping會發生變化,最終的結果沒有分詞的效果。
2),如果不導入mapping也不會有分詞的效果。
3),順序導入最好按照:analyzer,mapping和data這個順序來,防止出現分詞失效的結果。


免責聲明!

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



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