实战问题:Elasticsearch 2.X 数据如何迁移到 7.X?

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 实战问题:Elasticsearch 2.X 数据如何迁移到 7.X?

1、实战问题

老师,我想请问一下,我们有个版本是2.4.x版本的es,想把他里面的数据(数据量比较大,十几T)导入到7.10.x版本,但是升级版本,需要的变更太多,只能选择数据迁移,不知道用什么方法去迁移,老师能给一些建议吗?

死磕 Elasticsearch 知识星球 https://t.zsxq.com/1250CqALT

2、问题拆解回复

从 Elasticsearch 2.4.x 到 7.10.x 的迁移确实是一个大跨步,直接升级的确存在很多不兼容的变更。数据迁移在这种场景下是一个相对稳妥的选择。以下是一些建议:

2.1 方案1——使用Elastidump:

Elasticdump 是一个用于从一个集群导入和导出数据的工具。你可以先从2.4.x版本的ES导出数据,然后导入到7.10.x版本。

1. # 导出
2. elasticdump --input=http://source-es-cluster:9200/myindex --output=/path/to/data.json --type=data
3. 
4. # 导入
5. elasticdump --input=/path/to/data.json --output=http://destination-es-cluster:9200/myindex --type=data

特别提醒球友:考虑到你的数据量很大,这可能需要一些时间,并且你可能需要分批次执行,而不是一次导出/导入所有数据。

2.2 方案二:使用 Reindex API

Elasticsearch 提供了一个Reindex API,允许你在远程的集群上重新索引。但由于版本之间的差异,你可能需要一个中间集群,例如一个6.x的Elasticsearch

先从2.4.x迁移到6.x,再从6.x迁移到7.10.x。

先试试直接 7.X 行不行吧。

2.3 方案三:Logstash

使用 Logstash 也是一个可行的选择。你可以设置 2.4.x 版本的Elasticsearch作为输入源,7.10.x 版本的Elasticsearch作为输出目标。

3、迁移特别注意事项

3.1 数据模型和映射

在迁移数据之前,检查你的数据模型和索引映射。

图片来自:https://github.com/LisaHJung

一般先迁移 Mapping,再迁移数据。这样能有效避免索引 Mapping 不一致的情况。

7.x版本对于某些数据类型和设置有所不同,你可能需要对映射进行调整。

比如:早期版本支持多type,7.X 及之后版本已不支持。如果要迁移,多个 type 数据 可以迁移到多个不同索引。

3.2 备份

在进行任何操作之前,确保你有2.4.x版本的完整备份

虽然你不打算进行版本升级,但始终保持数据备份是一个好习惯。

3. 3 先测试小规模数据

在进行大规模迁移之前,建议你先测试一小部分数据的迁移,以确保过程是正确的,并对可能出现的问题有所了解。

如果小规模可行,再验证大规模集群数据。

3.4 考虑集群性能和容量

由于数据量很大,导入新的 7.10.x 版本时,确保你的集群有足够的容量和性能来处理数据导入的负载。

详细新版本集群规划的时候已经考虑了这一点,如果当时没有考虑数据激增情况,现在就得考虑一下。

3.5 监控

在迁移过程中,持续监控集群的性能和健康状况,确保所有事情都在预期之内进行。

3.6 特别提醒球友

迁移总是有其挑战性的,尤其是跨多个主版本。但通过结构化和步骤化的方法,你可以确保流程尽可能顺畅。

4、迁移实战反馈

4.1 可行性验证

球友反馈:老师,经过部署测试,logstash2.4.1版本可以把 es2.4.1版本的数据迁移到 7.10.2上去。

4.2 中间遇到的坑及解决方案

但是需要升级插件版本(logstash-output-elasticsearch插件版本6.2.5及以上),我们的源es版本2.4.1版本太低,所以没敢升太高,最后选择了6.3.0版本的插件。

4.3 迁移速率及耗时

由于2.4.1版本太低,没法调优,只能使用默认的配置。

  • 集群配置:主机4c 16g,单个logstash迁移 482M 数据。
  • 文档行数: 7189899
  • 耗时: 26分钟23秒。

至此,验证完成,问题解决。

推荐阅读


更短时间更快习得更多干货!

和全球 近2000+ Elastic 爱好者一起精进!

Elasticsearch,打开数据之门,

引领你的数据之旅


相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
4天前
|
存储 JSON 数据格式
Elasticsearch 8.X 可以按照数组下标取数据吗?
Elasticsearch 8.X 可以按照数组下标取数据吗?
16 0
|
2天前
|
SQL 关系型数据库 数据库
实时计算 Flink版产品使用合集之将数据写入Elasticsearch时,若Elasticsearch中的字段类型为date,对应的SQL类型应该是什么
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
23 0
|
3天前
|
SQL 监控 API
实时计算 Flink版产品使用合集之可以用来同步数据到 Elasticsearch(ES)吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
12 0
实时计算 Flink版产品使用合集之可以用来同步数据到 Elasticsearch(ES)吗
|
4天前
|
人工智能 自然语言处理 开发者
Langchain 与 Elasticsearch:创新数据检索的融合实战
Langchain 与 Elasticsearch:创新数据检索的融合实战
31 10
|
4天前
|
存储 数据处理 索引
Elasticsearch 8.X 小技巧:使用存储脚本优化数据索引与转换过程
Elasticsearch 8.X 小技巧:使用存储脚本优化数据索引与转换过程
34 6
|
4天前
|
canal 自然语言处理 关系型数据库
Elasticsearch 线上实战问题及解决方案探讨
Elasticsearch 线上实战问题及解决方案探讨
18 0
|
4天前
|
JSON 测试技术 数据格式
Elasticsearch 8.X 如何生成 TB 级的测试数据 ?
Elasticsearch 8.X 如何生成 TB 级的测试数据 ?
15 0
|
4天前
|
存储 Serverless 定位技术
深度探索 Elasticsearch 8.X:function_score 参数解读与实战案例分析
深度探索 Elasticsearch 8.X:function_score 参数解读与实战案例分析
10 0
|
4天前
|
Java Maven 开发工具
【ElasticSearch 】IK 分词器安装
【ElasticSearch 】IK 分词器安装
24 1
|
4天前
|
数据可视化 索引
elasticsearch head、kibana 安装和使用
elasticsearch head、kibana 安装和使用

热门文章

最新文章