Logstash 将ES数据导入数据库

Logstash 将ES数据导入数据库

Logstash 7.2.0

1、logstash-output-jdbc安装

2、问题梳理

3、conf文件

1、logstash-output-jdbc安装

/opt/logstash/bin/logstash-plugin install logstash-output-jdbc

2、问题梳理

a、日期字段格式转换问题

b、es日期与我们要的日期时差问题,日期加减

这两个问题output-jdbc确实不好解决,不过把这两问题放在filter里就比较简单了

日期字段格式转换:

   date {
    match => [ "timestamp" , "YYYY-MM-dd'T'HH:mm:ss.SSS'Z'" ]
	timezone => "Asia/Shanghai"
	target => "timestamp"
  }

es日期与我们要的日期时差问题,es的日期本身差了8个小时,再上一步的转换时,又差了8个小时,所以,我们要的日期是上面的日期再加上16个小时

  ruby {   
   		code => "event.set('timestamp', event.get('timestamp').time.localtime + 16*60*60)"   
 	}

3、conf文件

以es导入MySQL为例

input {
  elasticsearch {
        hosts => "hostname"
        index => "ping-min-2019-11-08"
        size => 5000
		user => "username"
		password => "password"
		schedule => "*/2 * * * *"
      }
}

filter {

	

   date {
    match => [ "timestamp" , "YYYY-MM-dd'T'HH:mm:ss.SSS'Z'" ]
	timezone => "Asia/Shanghai"
	target => "timestamp"
  }
  
  ruby {   
   		code => "event.set('timestamp', event.get('timestamp').time.localtime + 16*60*60)"   
 	}
  
   
}

output {
  jdbc{
     driver_jar_path => "H:/mysql/mysql-connector-java.jar"
    driver_class => "com.mysql.jdbc.Driver"
    connection_string => "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8"
	username => "root"
	password => "123456"
	 statement => [ "insert into PING (id,timestamp,scheme,IP,URL,upCount,downCount,type) values (?,?,?,?,?,?,?,?)","[id]","[timestamp]","[scheme]","[IP]","[URL]","[upCount]","[downCount]","[type]"]
  }
}

现在人工智能非常火爆,很多朋友都想学,但是一般的教程都是为博硕生准备的,太难看懂了。最近发现了一个非常适合小白入门的教程,不仅通俗易懂而且还很风趣幽默。所以忍不住分享一下给大家。点这里可以跳转到教程。

https://www.cbedai.net/u014646662

发布了139 篇原创文章 · 获赞 273 · 访问量 666万+

猜你喜欢

转载自blog.csdn.net/u014646662/article/details/102971508
今日推荐