文/朱季謙node
最近在開發當中作了一些涉及到Elasticsearch映射結構及數據導出導入的工做,怕之後會把這過程忘記,可謂好記性不如爛筆頭,故而記錄成一篇博文。linux
玩Elasticsearch的童鞋大概都會遇到這樣一個問題,如何快速地將Elasticsearch裏的索引結構映射和對應數據快速地進行備份和數據還原。正則表達式
這時,就能夠經過Elasticsearch的導入導出工具Elasticdump來實現,能夠將Elasticsearch不一樣集羣的數據進行索引備份和還原。shell
在npm關於Elasticdump的英文官網裏,能夠看到一篇關於Elasticdump的英文介紹,這個工具的logo頗有意思,是一臺能夠搬運(遷移)東西(數據)的工具車,這個logo就代表該Elasticdump工具可用來遷移備份和恢復數據。npm
使用Elasticdump時特別須要是,若直接用npm install elasticdump -g
來按照,node版本須要在v10.0.0
以上才能支持,不然執行該指令會出錯。json
Elasticdump經過向發送一個input
來工做output
,其標準指令是bash
elasticdump --input SOURCE --output DESTINATION [OPTIONS]
input SOURCE
表示讀取數據源SOURCEoutput DESTINATION
表示將數據源傳輸到目的地DESTINATION。SOURCE/DESTINATION
二者均可以是Elasticsearch URL或文件,若是是Elasticsearch URL,例如http://127.0.0.1/index,就意味着是直接往地址爲http://127.0.0.1ES庫裏導入或者從其導出索引相關數據。[OPTIONS]
是操做選項,比較經常使用有type和limit,其餘操做這裏就不展開介紹。type是ES數據導出導入類型,Elasticdum工具支持如下數據類型的導入導出——服務器
type類型 | 說明 |
---|---|
mapping | ES的索引映射結構數據 |
data | ES的數據 |
settings | ES的索引庫默認配置 |
analyzer | ES的分詞器 |
template | ES的模板結構數據 |
alias | ES的索引別名 |
limit
從SOURCE備份到DESTINATION的對象數量,默認是100,可自定義設置。app
1. 在線安裝Elasticdum工具須要依賴node,故而先安裝v10.0.0以上的node。elasticsearch
[root@zhu opt]# wget https://nodejs.org/dist/v12.18.3/node-v12.18.3-linux-x64.tar.xz [root@zhu opt]# tar xvf node-v12.18.3-linux-x64.tar.xz -C /usr/local/ [root@zhu opt]# mv /usr/local/node-v12.18.3-linux-x64 /usr/local/nodejs [root@zhu opt]# echo export NODEJS_HOME=/usr/local/nodejs >> /etc/profile [root@zhu opt]# echo export PATH=$PATH:$NODEJS_HOME/bin >> /etc/profile [root@zhu opt]# echo export NODEJS_PATH=$NODEJS_HOME/lib/node_modules >>/etc/profile [root@zhu opt]# source /etc/profile [root@zhu opt]# ln -s /usr/local/nodejs/bin/node /usr/local/bin/node [root@zhu opt]# ln -s /usr/local/nodejs/bin/npm /usr/local/bin/npm [root@zhu opt]# npm -v 6.14.6 [root@zhu opt]# node -v v12.18.3
2. 經過npm安裝elasticdump
[root@zhu opt]# npm install elasticdump -g
安裝成功後,進入到
[root@zhu opt]#cd /usr/local/nodejs/lib/node_modules/elasticdump/bin
能夠看到有兩個命令,elasticdump用來備份單個索引,multielasticdump能夠用來並行備份多個索引:
root@zhu bin]# ll 總用量 20 -rwxr-xr-x. 1 1001 1001 4026 4月 9 14:38 elasticdump -rwxr-xr-x. 1 1001 1001 14598 10月 26 1985 multielasticdump
使用elasticdump進行單個索引備份還原操做——
- 導出索引test_event的mapping映射結構:
[root@zhu opt]# elasticdump --input=http://127.0.0.1:9200/test_event --output=/opt/test_event_mapping.json --type=mapping
檢查當前,發現已經備份成json文件:
[root@zhu opt]# ll 總用量 14368 -rw-r--r--. 1 root root 6200 4月 9 11:30 ucas_hisevenr_mapping.json
還能夠直接導入到另外一個es集羣當中:
[root@zhu opt]# elasticdump --input=http://127.0.0.1:9200/test_event --output=http://127.0.0.2:9200/test_event --type=mapping
- 導出索引test_event的數據:
[root@zhu opt]# elasticdump --input=http://127.0.0.1:9200/test_event --output=/opt/data.json --type=data
同理,可直接將備份數據導入另外一個es集羣:
[root@zhu opt]# elasticdump --input=http://127.0.0.1:9200/test_event --output=http://127.0.0.2:9200/test_event --type=data
elasticdump進行數據還原操做
- mapping映射結構還原:
[root@zhu opt]# elasticdump --input=/opt/test_event_mapping.json --output http://127.0.0.1:9200/ --type=mapping
- data數據還原
[root@zhu opt]# elasticdump --input=/opt/data.json --output=http://127.0.0.1:9200/test_event --type=data
使用elasticdump進行多個索引備份操做:
#將ES索引及其全部類型備份到es_backup文件夾中 multielasticdump direction = dump match ='^.*$' input = http://127.0.0.1:9200 output =/tmp/es_backup
#僅備份ES索引以「 -index」(匹配正則表達式)爲前綴的結尾。僅備份索引數據。全部其餘類型都將被忽略。#注意:默認狀況下會忽略分析器和別名類型 multielasticdump --direction=dump --match='^.*-index$' --input=http://127.0.0.1:9200 --ignoreType='mapping,settings,template' --output=/tmp/es_backup
使用elasticdump進行多個索引還原操做:
multielasticdump --direction=load --input=/tmp/es_backup --output=http://127.0.0.1:9200
備份時,--direction
=dump
是默認值,則--input
必須是ElasticSearch服務器基本位置的URL(即http://localhost:9200
),而且--output
必須是目錄。每一個匹配的索引都會建立一個數據,映射和分析器文件。
還原時,要加載從multi- elasticsearch轉儲的文件,--direction
應將其設置爲load
,--input
必須是multielasticsearch轉儲的目錄,而且--output
必須是Elasticsearch服務器URL。
--match`用於過濾應轉儲/加載的索引(正則表達式)。
--ignoreType
容許從轉儲/加載中忽略類型。支持六個選項。data,mapping,analyzer,alias,settings,template
。提供了多類型支持,使用時每種類型必須用逗號分隔,並interval
容許控制生成新索引的轉儲/裝入的時間間隔。
--includeType
容許將類型包含在轉儲/裝載中。支持六個選項- data,mapping,analyzer,alias,settings,template
。