使用elasticdump導入導出數據


一、安裝elasticdump

終端中輸入 

npm install elasticdump -g

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

C:\Users\T470s>elasticdump --version
6.3.3 

 

二、常用的導入導出方法

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

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

 其中,demo是索引。

 2、將本地數據導入es中

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

 3、將es導入另一個es

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 即可:

npm install elasticdump

 

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

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

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

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;"}

 

所以后面改為按索引分別導入則可以:

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到本地,然后找到索引的名稱再到各導入分詞:

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

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

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

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

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

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