Logstash是一个功能强大的开源数据收集引擎,具有实时管道功能,广泛应用于日志处理、数据分析、数据采集和ETL(提取、转换、加载)等领域。
天翼云云搜索服务支持使用Logstash的方式来进行数据的迁移。
使用限制
Logstash的方式迁移数据支持跨大版本,且迁移方式灵活,下表是支持的集群版本:
源\目标 | Elasticsearch7.10.2 | OpenSearch2.9.0 |
---|---|---|
Elasticsearch6.x | √ | √ |
Elasticsearch7.x小于7.10.2 | √ | √ |
Elasticsearch7.x大于7.10.2 | √ | √ |
Elasticsearch8.x | √ | √ |
Logstash适用的场景
- 迁移全量或增量数据,且对实时性要求不高的场景。
- 需要对迁移的数据进行简单或者复杂的过滤的场景。
- 版本跨度较大的数据迁移场景,如 6.x 版本迁移到 7.x 版本。
Logstash迁移方式的优点
- 配置灵活性强,支持跨大版本迁移。
- 支持用户添加或删除字段、对数据进行过滤。
- 支持全量或者增量迁移。
迁移步骤参考
我们以Elasticsearch7.10.2迁移OpenSearch2.9.0为例:
- 正常运行Elasticsearch7.10.2和OpenSearch2.9.0实例后,配置Logstash管道文件:
input {
elasticsearch {
# ES地址
hosts => ["ip1:9200", "ip2:9200", "ip3:9200"]
# 需要迁移的索引列表,以逗号分隔
index => "xxx,xxx"
# 以下保持默认即可
docinfo => true
}
}
filter {
# 去掉一些logstash自己加的字段
mutate {
remove_field => ["@timestamp", "@version"]
}
# 可以在这个部分添加filter模块对数据进行过滤
}
output {
opensearch {
# 目的端OS地址
hosts => ["ip1:9200", "ip2:9200", "ip2:9200"]
# 目的端索引名称,以下配置为了保证和源端一致
index => "%{[@metadata][_index]}"
# 保留目的数据的_id
document_id => "%{[@metadata][_id]}"
}
}
- 启动Logstash实例,完成数据迁移。