这篇文章上次修改于 312 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

安装Logstash

cd /usr/local
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.10.0-linux-x86_64.tar.gz
tar -zvxf logstash-7.10.0-linux-x86_64.tar.gz
  • 进入Logstash的安装目录下,修改Logstash配置文件config/jvm.options,增加-Xms4g和-Xmx4g。
cd logstash-7.10.0
sudo vi config/jvm.options

请输入图片描述

  • 验证Logstash功能。
bin/logstash -e 'input { stdin { } } output { stdout {} }'

在控制台中输入"Hello"。正常情况下,控制台会输出"Hello"。

请输入图片描述

开始迁移全量数据

  • 迁移的前提是先把新的es里面索引元数据(设置和映射)建立好
  • 在config目录下,创建并打开Logstash配置文件
cd logstash-7.10.0/config
vi es2es_all.conf
  • 文件配置内容参考入下

input{ elasticsearch{ # 源端ES地址。 hosts => ["http://*.*.*.*:9200"] # 安全集群配置登录用户名密码。 user => "用户名" password => "密码" # 需要迁移的索引列表,多个索引以英文以逗号(,)分隔。 index => "kc_shop_*" # 以下三项保持默认即可,包含线程数和迁移数据大小和Logstash JVM配置相关。 docinfo=>true slices => 5 size => 5000 } } filter { # 去掉一些Logstash自己加的字段。 mutate { remove_field => ["@timestamp", "@version"] } } output{ elasticsearch{ # 目标端ES地址 hosts => ["http://127.0.0.1:9200"] # 安全集群配置登录用户名密码。 user => "用户名" password => "密码" # 目标端索引名称,以下配置表示索引与源端保持一致。 index => "%{[@metadata][_index]}" # 目标端数据的id,如果不需要保留原id,可以删除以下这行,删除后性能会更好。 document_id => "%{[@metadata][_id]}" ilm_enabled => false manage_template => false } }
  • 启动迁移任务

nohup bin/logstash -f config/es2es_all.conf >/dev/null 2>&1 &