1 安装
- 下载对应版本的tar文件
- https://www.elastic.co/cn/downloads/past-releases#logstash
-
- 解压
- tar -zvxf logstash-6.8.23-linux-x86_64.tar.gz
2 配置
- 修改Logstash的堆内存使用
- vi config/jvm.options,修改Logstash配置文件config/jvm.options,增加-Xms2g和-Xmx2g。
-
- 修改Logstash批量写入记录条数,可以加快集群数据的迁移效率
- vi config/pipelines.yml
- pipeline.batch.size从125改为5000
3 创建迁移文件
- 配置logstash
- 进入到安装目录下
- cd /export/server/logstash/confing/
- 创建vi es2es_all.conf文件
- input {
- elasticsearch {
- hosts => "http://ip:9200" ##源es集群
- user => "用户名" ##认证信息
- password => "密码"
- index => "索引名称" ##⽀持通配符,* 表⽰所有索引,如果索引多数据量⼤可以分开配置
- query => '{ "sort": [ "_doc" ] }'
- slices => 4 ##是否使⽤slice scroll加速迁移,值不超过单索引shard数
- scroll => "5m" ##scroll session保持时间
- size => 1000
- docinfo => true
- ssl => false ##是否使⽤ssl
- }
- }
- filter {
- # 去掉一些Logstash自己加的字段。
- mutate {
- remove_field => ["@timestamp", "@version"]
- }
- }
- output {
- elasticsearch {
- hosts => "http://ip:9200" ##目的 es集群
- user => "用户名"
- password => "密码"
- index => "索引名称" #与源es索引保持一致即可
- #index => "%{[@metadata][_index]}" #根据原来的信息填写对端的信息
- document_type => "%{[@metadata][_type]}" #目标端索引type,以下配置表示索引类型与源端保持一致
- document_id => "%{[@metadata][_id]}" #目标端数据的id,如果不需要保留原id,可以删除以下这行,删除后性能会更好
- ssl => false #关闭ssl
- ssl_certificate_verification => false
- ilm_enabled => false
- manage_template => false
- }
- }
4 执行命令,并观察日志
- 启动Logstash全量迁移任务
- nohup bin/logstash -f config/es2es_all.conf >es_all.log 2>&1 &
-
- 查看es_all.log日志是否有迁移报错,如果没有则执行以下命令,检查源索引和迁移后的目标索引大小是否一致
- tail -f 100 es_all.log
- 检查数据是否迁移成功
- curl -X GET http://ip:9200/_cat/indices?v