使用 Elasticsearch 7.12.1 通过 Logstash 7.12.1 迁移数据,可以将数据从一个 Elasticsearch 集群迁移到另一个集群,或从其他数据源(例如数据库)导入到 Elasticsearch 中。以下是基本步骤:
准备工作
- 安装 Logstash:确保已经安装了 Logstash 7.12.1(安装步骤可参考Centos7 安装Logstash7.12.1-CSDN博客)。
- 安装 Elasticsearch:确保源和目标集群都在运行并可访问(安装步骤可参考CentOS 7 安装 Elasticsearch 7.12.1-CSDN博客)。
配置 Logstash
创建一个 Logstash 配置文件来定义输入、过滤器和输出。在 /etc/logstash/conf.d/
目录中创建一个配置文件,例如 logstash.conf
:
sudo vim /etc/logstash/conf.d/logstash.conf
在文件中添加以下内容,这是一个示例配置文件,将从文件读取数据并发送到 Elasticsearch:
#input {
# elasticsearch {
# hosts => "http://*****:9200"
# user => "elastic"
# index => "index"
# password => "*****"
# docinfo => true
# docinfo_fields => "_index", "_id", "_type", "_routing"
# }
# }
#filter {
# # 去掉一些Logstash自己加的字段.
# mutate {
# remove_field => ["@timestamp", "@version"]
# }
#}
#output {
# elasticsearch {
# hosts => "http://***:9200"
# user => "elastic"
# password => "****"
# index => "%{@metadata}"
# document_type => "%{@metadata}"
# document_id => "%{@metadata}"
# routing => "%{@metadata}"
# }
#}
input{
elasticsearch{
# 源端ES地址。
hosts => ["http://*****:9200"]
# 安全集群配置登录用户名密码。
user => "elastic"
password => "******"
# 需要迁移的索引列表,多个索引使用英文逗号(,)分隔,全部迁移可以用*。
index => "index1,index2"
# 按时间范围查询增量数据,以下配置表示查询最近5分钟的数据。
#query => '{"query":{"range":{"@timestamp":{"gte":"now-5m","lte":"now/m"}}}}'
# 查询所有数据并同步输出源
query => '{"query":{"match_all":{}}}'
# 定时任务,以下配置表示每分钟执行一次。
#schedule => "* * * * *"
#scroll => "3m"
docinfo=>true
#size => 300
}
}
filter {
# 去掉一些Logstash自己加的字段.
mutate {
remove_field => ["@timestamp", "@version"]
}
}
output{
elasticsearch{
# 目标端ES地址,可在阿里云Elasticsearch实例的基本信息页面获取。
hosts => ["http://***:9200"]
# 安全集群配置登录用户名密码.
user => "elastic"
password => "******"
# 目标端索引名称,以下配置表示索引与源端保持一致。
index => "%{[@metadata][_index]}"
# 目标端索引type,以下配置表示索引类型与源端保持一致。
document_type => "%{[@metadata][_type]}"
# 目标端数据的id,如果不需要保留原id,可以删除以下这行,删除后性能会更好。
document_id => "%{[@metadata][_id]}"
#routing => "%{@metadata}"
ilm_enabled => false
manage_template => false
}
}
运行 Logstash
在命令行中运行 Logstash 并指定配置文件:
sudo nohup bin/logstash -f /etc/logstash/conf.d/logstash.conf >/var/log/logstash/es2es.log 2>&1 &
其他注意事项
对于大规模数据迁移,建议调整 Logstash 的批处理大小(pipeline.batch.size
)和工作者线程数(pipeline.workers
)来提高效率。
以上步骤提供了一个基本框架,用于通过 Logstash 迁移数据到 Elasticsearch。如果有更复杂的需求(如数据转换、过滤等),可以根据具体需求调整 Logstash 配置文件。