一、项目背景与目标
1.1 迁移场景
本次迁移项目涉及从腾讯云服务器上的 Elasticsearch 9.0.0 版本迁移数据至 Easysearch 集群。
Easysearch 作为 Elasticsearch 的兼容性分支,在保持核心功能兼容的同时, 提供了更好的本地化支持和性能优化,可以看做不错的国产化 Elasticsearch替代方案。

1.2 迁移目标
实现索引数据的完整迁移。 保持文档 ID 的一致性,避免数据重复。
确保迁移过程的数据完整性。 最小化对业务的影响。
完整视频解读
二、技术方案设计
2.1 方案选型:Logstash 方式
在多种迁移方案中(快照恢复、Reindex API、Logstash、第三方工具),本方案选择 Logstash 作为迁移工具。
主要优势如下:
(1)灵活性强:支持数据过滤、转换和处理。
(2)实时监控:可通过日志实时查看迁移进度。
(3)断点续传:支持 scroll 机制,大数据量迁移更稳定。
(4)跨版本兼容:能够处理不同版本间的差异。
2.2 架构设计

三、核心配置详解
3.1 Input 插件配置
input {
elasticsearch {
hosts => ["https://X.X.X.X:9200"]
index => "product-index"
user => "elastic"
password => "changeme"
ssl_enabled => true
ssl_verification_mode => "none"
docinfo => true
size => 500
scroll => "5m"
}
}
配置要点说明:
hosts | ||
index | ||
ssl_enabled | ||
ssl_verification_mode | ||
docinfo | 关键配置 | |
size | ||
scroll |
3.2 Filter 插件配置
filter {
ruby {
code => '
# 从元数据中提取索引名和文档 ID
if event.get("[@metadata][input][elasticsearch][_index]")
event.set("[@metadata][_index]", event.get("[@metadata][input][elasticsearch][_index]"))
event.set("[@metadata][_id]", event.get("[@metadata][input][elasticsearch][_id]"))
end
'
}
}
核心逻辑解析:
这段 Ruby 代码是整个迁移方案的核心,实现了以下功能:
元数据提取:从 Logstash 内部元数据路径 [@metadata][input][elasticsearch]
中提取原始索引名和文档 ID数据映射:将提取的信息重新映射到输出阶段可用的元数据字段 ID 保持:确保目标端文档 ID 与源端完全一致,避免数据重复
3.3 Output 插件配置
output {
elasticsearch {
hosts => ["http://127.0.0.1:9200"]
index => "%{[@metadata][_index]}"
document_id => "%{[@metadata][_id]}"
manage_template => false
template_overwrite => false
ilm_enabled => false
}
}
配置要点说明:
hosts | ||
index | ||
document_id | ||
manage_template | ||
ilm_enabled |
四、实施步骤
4.1 前期准备
1. 环境检查
(1)检查源端 Elasticsearch 连接

(2)检查目标端 Easysearch 连接

4.2 执行迁移
1. 启动 Logstash
.\logstash.bat -f "D:\software\logstash-9.0.0-windows-x86_64\logstash-9.0.0\config\migration.conf"

4.3 迁移验证
1. 数据完整性验证


5.1 文档 ID 保持机制
通过 docinfo => true
和 Ruby 脚本配合,实现了文档 ID 的完整保持:

5.2 批量处理优化
size: 500:平衡了网络传输效率和内存占用 scroll: 5m:为大数据量迁移提供足够的处理时间 可根据实际网络环境调整参数
5.3 SSL 连接处理
源端使用 HTTPS 协议,配置了:
ssl_enabled => true
:启用 SSLssl_verification_mode => "none"
:跳过证书验证(生产环境建议使用有效证书)
六、总结与展望

通过本方案,我们成功实现了从 Elasticsearch 9.0.0 到 Easysearch 的平滑迁移,为后续的系统升级和优化奠定了坚实基础。
该方案已在生产环境验证,具有较高的可靠性和实用价值。

更短时间更快习得更多干货!
和全球超2000+ Elastic 爱好者一起精进!
elastic6.cn——ElasticStack进阶助手

抢先一步学习进阶干货!




