Elasticsearch数据迁移

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 今天换了新的ES集群,要把原集群的ES数据库的数据迁移到新的集群上,经过查找elasticdump使用的人不少,所以今天大家和我一起来学学elasticdump吧!

今天换了新集群,要把原集群的ES数据库的数据迁移到新的集群上,经过查找elasticdump使用的人不少,所以今天大家和我一起来学学elasticdump做数据迁移吧。

1、安装

官方提供了两种方式安装,一种是npm,另一种是docker。我们这里使用其中的一种npm安装。

## 安装npm
yum install npm
## 全局安装elasticdump
npm install elasticdump -g

为什么全局安装呢?当然是方便使用,如果你不想全局安装的话就去掉参数-g,那么你想使用elasticdump的话需要去安装路径下。这里推荐全局安装。

2、验证安装结果

elasticdump --version

如果能正确提示版本信息,那么恭喜你安装完毕。但是如果你的提示错误信息,如下:

SYNTAXERROR: UNEXPECTED IDENTIFIER
  at createScript (vm.js:56:10)
  at Object.runInThisContext (vm.js:97:10)
  at Module._compile (module.js:549:28)
  at Object.Module._extensions..js (module.js:586:10)
  at Module.load (module.js:494:32)
  at tryModuleLoad (module.js:453:12)
  at Function.Module._load (module.js:445:3)
  at Module.require (module.js:504:17)
  at require (internal/module.js:20:19)
  at Object.<anonymous> (/opt/node_modules/elasticdump/elasticdump.js:3:28)

这个错误是由于nodejs版本过低导致的,所以我们要升级nodejs的版本。

3、升级nodejs

如果上一步你的elasticdump没报错,请忽略此步,直接执行下一步。

npm install -g n
n latest

升级完成之后,再次重试

elasticdump --version

如果出现版本信息,那么接下来就可以大展身手了。

4、复制mapping

上一节Docker如何自定义host文件,我们提到我们的数据库都是部署在内网的,那么原来的es和新的es就无法直接连接。那么该怎么迁移呢?

  • 公司的IP可以访问这两个集群的公网(公网可以针对某一IP放行)

    那么elasticdump就可以安装在你公司的服务器上,执行以下命令

    elasticdump --input=http://原ES的IP:9200/db_customer --output=http://新ES的IP:9200/db_customer --type=mapping
  • 就只有内网可以访问,公网一点不开放

    这种情况你就麻烦些了,首先得把原来的ES的数据导出成文件,然后把文件复制到新的ES所在集群,再执行导入操作。

    # 原es的服务器
    elasticdump --input=http://原ES的IP:9200/db_customer --output=/data/db_customer.json --type=mapping

    将/data/my_index_mapping.json文件复制到新es

    # 新es的服务器
    elasticdump --input=./db_customer.json --output=http://新ES的IP:9200 --type=mapping

    这种方式相对来说,比较麻烦,最好结合命令写脚本吧。如果你的索引比较多那不累死。

  • 有密码的ES集群

    以第一种方式为例。

    • 创建认证文件auth.ini,内容如下

      user=elastic
      password=password
    • 执行命令

      elasticdump --httpAuthFile auth.ini --input=http://原ES的IP:9200/db_customer --output=http://新ES的IP:9200/db_customer --type=mapping

    也有人说可以直接在地址栏输入用户名密码,想连接数据库的url一样,我在浏览器测试是可以的。你们可以试一试。

    elasticdump --input=http://elastic:password@原ES的IP:9200/db_customer --output=http://elastic:password@新ES的IP:9200/db_customer --type=mapping

5、复制data

将上述的type修改为data即可。

elasticdump --httpAuthFile auth.ini --input=http://原ES的IP:9200/db_customer --output=http://新ES的IP:9200/db_customer --type=data

6、其他类型

type 说明
settings --type=settings
alias --type=alias
analyzer --type=analyzer
template --type=template

写在最后

目测1s可以导100个文档,我这文档比较小,而且数据不多,因为我是两个服务器的公网导入,可能也受限于带宽。数据量大的话不知道效果怎么样,以后有机会对测试看看。

来都来了,点个赞再走呗!

关注WangScaler,祝你升职、加薪、不提桶!

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
4月前
|
自然语言处理 API 开发工具
Elasticsearch 重建索引 数据迁移
【7月更文挑战第1天】Elasticsearch 更改索引结构、重建索引、数据迁移操作等
|
6月前
|
索引
elasticsearch数据迁移
elasticsearch数据迁移
|
索引 Python
阿里云ElasticSearch索引元数据迁移-基于Python3原生类库
阿里云ElasticSearch索引元数据迁移-基于Python3原生类库
|
容器
ElasticSearch03_Mapping字段映射、常用类型、数据迁移、ik分词器、自定义分词器(六)
ElasticSearch03_Mapping字段映射、常用类型、数据迁移、ik分词器、自定义分词器(六)
164 0
ElasticSearch03_Mapping字段映射、常用类型、数据迁移、ik分词器、自定义分词器(六)
|
JSON 数据格式 索引
ElasticSearch03_Mapping字段映射、常用类型、数据迁移、ik分词器、自定义分词器(一)
ElasticSearch03_Mapping字段映射、常用类型、数据迁移、ik分词器、自定义分词器(一)
104 0
ElasticSearch03_Mapping字段映射、常用类型、数据迁移、ik分词器、自定义分词器(一)
|
JSON JavaScript API
Elasticsearch 跨集群数据迁移方案总结
Elasticsearch 跨集群数据迁移方案总结
649 0
Elasticsearch 跨集群数据迁移方案总结
|
JSON JavaScript Java
Elasticsearch 跨集群数据迁移方案总结
Elasticsearch 跨集群数据迁移方案总结 -- elasticsearch-dump、reindex、snapshot、logstash
2457 0
Elasticsearch 跨集群数据迁移方案总结
|
Docker 容器
ElasticSearch03_Mapping字段映射、常用类型、数据迁移、ik分词器、自定义分词器(八)
ElasticSearch03_Mapping字段映射、常用类型、数据迁移、ik分词器、自定义分词器(八)
150 0
|
索引
ElasticSearch03_Mapping字段映射、常用类型、数据迁移、ik分词器、自定义分词器(七)
ElasticSearch03_Mapping字段映射、常用类型、数据迁移、ik分词器、自定义分词器(七)
ElasticSearch03_Mapping字段映射、常用类型、数据迁移、ik分词器、自定义分词器(五)
ElasticSearch03_Mapping字段映射、常用类型、数据迁移、ik分词器、自定义分词器(五)
116 0