文/朱季谦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
。