文/朱季谦

最近在开发当中做了一些涉及到Elasticsearch映射结构及数据导出导入的工作,怕以后会把这过程忘记,可谓好记性不如烂笔头,故而记录成一篇博文。

玩Elasticsearch的童鞋大概都会遇到这样一个问题,如何快速地将Elasticsearch里的索引结构映射和对应数据快速地进行备份和数据还原。

这时,就可以通过Elasticsearch的导入导出工具Elasticdump来实现,可以将Elasticsearch不同集群的数据进行索引备份和还原。

一、Elasticdump工具介绍

在npm关于Elasticdump的英文官网里,可以看到一篇关于Elasticdump的英文介绍,这个工具的logo很有意思,是一台可以搬运(迁移)东西(数据)的工具车,这个logo就表明该Elasticdump工具可用来迁移备份和恢复数据。

使用Elasticdump时特别需要是,若直接用npm install elasticdump -g来按照,node版本需要在v10.0.0以上才能支持,否则执行该指令会出错。

Elasticdump通过向发送一个input来工作output,其标准指令是

elasticdump --input SOURCE --output DESTINATION [OPTIONS]
  • input SOURCE表示读取数据源SOURCE
  • output 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,可自定义设置。

二、Elasticdump工具安装

1. 在线安装Elasticdum工具需要依赖node,故而先安装v10.0.0以上的node。

[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工具使用

使用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

根据npm的elasticdump英文官网介绍可知,这里需要注意一点是,即使用multielasticdump有一个区别的地方是--direction的参数设置和--ignoreType参数设置。

  • 备份时,--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

实际使用Elasticdump工具对Elasticsearch集群进行数据备份和数据还原的更多相关文章

  1. ElasticSearch 集群 & 数据备份 & 优化

    ElasticSearch 集群相关概念 ES 集群颜色状态 ①. - 红色:数据都不完整 ②. - 黄色:数据完整,但是副本有问题 ③. - 绿色:数据和副本全都没有问题 ES 集群节点类型 ①. ...

  2. 我的ElasticSearch集群部署总结--大数据搜索引擎你不得不知

    摘要:世上有三类书籍:1.介绍知识,2.阐述理论,3.工具书:世间也存在两类知识:1.技术,2.思想.以下是我在部署ElasticSearch集群时的经验总结,它们大体属于第一类知识“techknow ...

  3. 剖析Elasticsearch集群系列第一篇 Elasticsearch的存储模型和读写操作

    剖析Elasticsearch集群系列涵盖了当今最流行的分布式搜索引擎Elasticsearch的底层架构和原型实例. 本文是这个系列的第一篇,在本文中,我们将讨论的Elasticsearch的底层存 ...

  4. CentOS下 elasticsearch集群安装

    1.进入root目录并下载elasticsearch cd /root wget https://download.elastic.co/elasticsearch/elasticsearch/ela ...

  5. [译]使用explain API摆脱ElasticSearch集群RED苦恼(转)

    "哔...哔...哗",PagerDuty的报警通知又来了. 可能是因为你又遭遇了节点宕机, 或者服务器机架不可用, 或者整个ElasticSearch集群重启了. 不管哪种情况, ...

  6. Elasticsearch集群架构的部署和调优(一)

    [root@es-node1 ~]# mkdir /usr/java[root@es-node1 ~]# tar zxvf jdk1.8.0_131.tar.gz -C /usr/java/ [roo ...

  7. Elasticsearch学习总结 (Centos7下Elasticsearch集群部署记录)

    一.  ElasticSearch简单介绍 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticse ...

  8. 400+节点的 Elasticsearch 集群运维

    本文首发于InfoQ https://www.infoq.cn/article/1sm0Mq5LyY_021HGuXer 作者:Anton Hägerstrand 翻译:杨振涛 目录: 数据量 版本 ...

  9. 剖析Elasticsearch集群系列之一:Elasticsearch的存储模型和读写操作

    转载:http://www.infoq.com/cn/articles/analysis-of-elasticsearch-cluster-part01 1.辨析Elasticsearch的索引与Lu ...

随机推荐

  1. [C语言学习笔记三]格式化输出和输入

    使用 printf 函数来输出,使用 scanf 函数来输入 在 printf 函数中使用变量,需要使用占位符代替. int 型一般存储整数,使用 %d 代替 long long int 型一般存储长 ...

  2. 开源OA办公平台搭建教程:O2OA+Arduino实现物联网应用(二)

    O2OA平台搭建 O2OA的开发环境非常简单,安装服务器后即可通过浏览器进行开发了和使用.具体可参考文档库中的其他文档,有比较详细的介绍,这里就不再赘述了. Arduino开发发环境搭建 安装Ardu ...

  3. iOS拍照定制之AVCaptureVideoDataOutput

    问题 领导看了前面做的拍照,问了句"哪来的声音", "系统的,自带的,你看系统的拍照也有声音" "有办法能去掉吗?挺糟心的" "我 ...

  4. 第49天学习打卡(CSS 层次选择器 结构伪类选择器 属性选择器 美化网页元素 盒子模型)

    推荐书籍:码出高效: Java 开发手册 2.2 层次选择器 idea里代码规范是按:ctrl +alt+L快捷键 注释快捷键:ctrl+/ 1.后代选择器:在某个元素的后面 祖爷爷 爷爷 爸爸 你 ...

  5. PCA主成分分析的矩阵原理

    [前言]主成分分析(PCA)实现一般有两种,一种是对于方阵用特征值分解去实现的,一种是对于不是方阵的用奇异值(SVD)分解去实现的. 一.特征值 特征值很好理解,特征值和特征向量代表了一个矩阵最鲜明的 ...

  6. RabbitMQ(一)安装篇

    1. RabbitMQ 的介绍➢ 什么是 MQ?MQ 全称为 Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.➢ 要解决什么样的问题?在项目中,将一些无需即时返回且耗 ...

  7. 后端程序员之路 4、一种monitor的做法

    record_t包含_sum._count._time_stamp._max._min最基础的一条记录,可以用来记录最大值.最小值.计数.总和metric_t含有RECORD_NUM(6)份recor ...

  8. LeetCode1576. 替换所有的问号

    原题链接 1 class Solution { 2 public: 3 string modifyString(string s) { 4 int lens = s.length(); 5 for(i ...

  9. 项目管理之Git

    @[TOC]( Git命令:分支与合并)Git一款很好的项目版本管理工具,更是一款优秀的分布式项目管理工具.今天主要给大家介绍Git 强大的分支和合并功能,分支和合并可以说在实际的工作当中用到的是最多 ...

  10. ProBuilder快速原型开发技术 ---不规则模型与材质

    ProBuilder开发模型的强大之处,还在于可以按照要求精确定制不规则模型.克隆镜像模型.给模型着色以及添加材质等,下面笔者就这几方面进行讲解. 一:定制不规则模型 PB有一个专门定制不规则模型的功 ...