美文网首页
使用Logstash将数据库导入Elastic Search

使用Logstash将数据库导入Elastic Search

作者: 社交达人叔本华 | 来源:发表于2018-12-14 21:19 被阅读0次

唉,生活所迫生活所迫,我又搞这些杂七杂八的啦,不记录一下也白瞎啦。这篇主要讲怎么把数据库里的数据直接导入到elastic search。参考的比较多的是这篇,写的非常好,可是我在实际操作的时候还是遇到了一些问题,所以自己写一个。写作的逻辑呢,就是怎么配置并且使用的全过程。

  首先了解一下,logstash的主要工作原理是在配置文件中定义一个管道,用这个管道就可以完成全过程。因此你需要做的事情其实只有三步:

    1. 把logstash下载下来解压好,把mysql 对应版本的connector下载好
    1. 写配置文件
    1. 运行配置文件

1.运行elastic search 和 kibana

  怎么安装的我就不讲啦,刚入门的娃娃应该也不会看这种文章。我的环境呢是windows,直接到es的Bin目录下启动elasticsearch.bat文件就可以,启动之后在浏览器中输入localhost:9200如果有返回值说明启动成功了。kibana呢是方便查看结果的,用不用都行吧,反正我用了。

2. 配置logstash

  logstash是elastic search官方开发的用于整合数据的一个工具,它可以整合日志以及来自文件的两大类数据。整合日志的那个呢,官方教程里有我这里也就不细说了。我们今天要讲的是整合文件的数据,在这里其实是整合的数据库的数据。

  配置文件就是我下面给出的,这个配置文件直接放在logstash的根目录下就行,命名为`。里面有个坑:注意观察数据库连接字符串,里面多了一个时区参数的定义,在这里我们一定要留心,否则会报错。还有个坑,如果数据库里有date类型的话,就不要在定义索引的时候定义date的格式,直接用默认就行啦,不然又是报错。

input {
  jdbc {
    # 数据库驱动路径
    jdbc_driver_library => "D:/elasticsearch/logstash-6.5.3/mysql-connector-java-8.0.12.jar"
    # 驱动名称
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    # 数据库的连接字符串
    jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/test_db?serverTimezone=UTC"
    # 数据库用户名
    jdbc_user => "root"
    # 数据库密码
    jdbc_password => "123456"
    # 重复执行导入任务的时间间隔  分-时-日-月-星期
    schedule => "* * * * *"
    # 导入的表(查询SQL,可以过滤数据)
    statement => "SELECT *from articles"
    #  默认时区
    jdbc_default_timezone => "Asia/Shanghai"
  }
}
output {
  
  elasticsearch {
  # es地址
  hosts => "127.0.0.1:9200"
  # 索引名称
  index => "articles"
  # 索引类型
  document_type => "_doc"
  # 类似主键,es中id对应数据库的字段
  document_id => "%{aid}"
  }
  stdout {
  codec => plain { charset => "UTF-8"}
  }
}

3.下载mysql connector

  connector是程序用来连接数据库的驱动,可以去mysql的官网下载,但是现在居然还要注册啦,而且注册登陆都挺费劲的。不过好在可以直接去远程maven库中下载,什么版本的都有。

4.运行logstash

运行bin目录下的logstash脚本(我是用mingwin运行的),命令为logstash -f ../jdbc.cnf就跑起来啦。

相关文章

网友评论

      本文标题:使用Logstash将数据库导入Elastic Search

      本文链接:https://www.haomeiwen.com/subject/hoeghqtx.html