使用Logstash将MySQL数据导入Elasticsearch

1. Logstash是什么

Logstash是一款轻量级的日志搜集处理框架,可以方便的把分散的、多样化的日志搜集起来,并进行自定义的处理,然后传输到指定的位置,比如某个服务器或者文件

logstash常用于日志系统中做日志采集设备,最常用于ELK中作为日志收集器使用,其功能包括实时更新数据等,非常强大

2. Logstash控制台测试

  1. 进入安装Logstash的 /bin目录下,打开cmd控制台(logstash是执行文件)
    在这里插入图片描述
  2. 执行命令

执行命令: logstash 输入{键盘键入} 输出{控制台输出}

logstash -e 'input { stdin { } } output { stdout {} }
  1. -e : 执行
  2. stdin :表示输入流,指从键盘输入
  3. stdout :表示输出流,指从控制台输出
  4. --config 或 -f 配置文件 : 后跟参数类型可以是一个字符串的配置或全路径文件名或全路径路径(如:/etc/logstash.d/,logstash会自动读取/etc/logstash.d/目录下所有*.conf 的文本文件,然后在自己内存里拼接成一个完整的大配置文件再去执行)

在这里插入图片描述

3. MySQL数据导入Elasticsearch

这里使用 -f 命令,使用配置文件配置输入流和输出流,把mysql表中的数据导入ES服务器中,并实时更新

3.1 创建配置文件

Logstash/ 目录下创建文件夹 mysql_es_conf (文件名称随便起,文件夹创建位置也随意)

在这里插入图片描述
mysql_es_conf 文件夹下添加 mysql_es.conf 文件

input {
  jdbc {
	  # mysql 连接地址
	  jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/数据库名称?useUnicode=true&characterEncoding=utf-8&useSSL=false"
	  # 用户名 密码
	  jdbc_user => "root"
	  jdbc_password => "root"
	  # mysql 驱动jar包的绝对路径,不要有中文目录
	  jdbc_driver_library => "D:\Software\EnvSoftware\logstash-5.6.8\mysql_es_conf\mysql-connector-java-5.1.46.jar"
	  # mysql 驱动Class
	  jdbc_driver_class => "com.mysql.jdbc.Driver"
	  # 是否开启分页 true开启
	  jdbc_paging_enabled => "true"
	  # 分页大小 10000条一页
	  jdbc_page_size => "10000"
	  # sql语句的配置文件路径,如果sql语句比较长,那么写在文件里指定路径
	  #statement_filepath => ""
	  # sql语句 select * 字段就全部添加到ES里了,如果要指定指定字段 select id,name ...
	  statement => "select id,name,xx,xx from tb_article"
	  #定时字段 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新(测试结果,不同的话请留言指出)
      schedule => "* * * * *"
  }
}

output {
  elasticsearch {
	  #ES IP地址与端口
	  hosts => "xxx.xxx.xxx.xxx:9200" 
	  #ES索引名称(自己定义的)
	  index => "xxx"
	  #自增ID编号 这里是固定语法 %{} 里面写mysql表那个字段就用那个字段作为ES _id 的值
	  document_id => "%{id}"
	  # ES 下的 type 
	  document_type => "xxx"
  }
  # 控制台输出输入流和输出流
  stdout {
      #以JSON格式输出
      codec => json_lines
  }
}

mysql_es_conf 文件夹下添加 mysql 的驱动包

在这里插入图片描述

3.2 启动Logstash

执行命令

logstash -f ../mysql_es_conf/mysql.conf

可以看到mysql中的一条数据已经导入ES服务器中了

在这里插入图片描述
查看ES服务器中是否有数据导入,可以看到导入成功

在这里插入图片描述

3.3 实时更新数据测试

修改mysql中的数据,看是否会同步到 ES服务器中

在这里插入图片描述
查看控制台输出

在这里插入图片描述
查看ES服务器中数据是否更新,更新成功

在这里插入图片描述

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叫我三胖哥哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值