Elasticsearch通过Logstash迁移数据

使用 Elasticsearch 7.12.1 通过 Logstash 7.12.1 迁移数据,可以将数据从一个 Elasticsearch 集群迁移到另一个集群,或从其他数据源(例如数据库)导入到 Elasticsearch 中。以下是基本步骤:

准备工作

  1. 安装 Logstash:确保已经安装了 Logstash 7.12.1(安装步骤可参考Centos7 安装Logstash7.12.1-CSDN博客)。
  2. 安装 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 配置文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值