【Elasticsearch系列之七】Windows下使用logstash实现Oracle数据到ES的同步

【Elasticsearch系列之七】Windows下使用logstash实现Oracle数据到ES的同步

主要参考 https://blog.csdn.net/laoyang360/article/category/6239824/5 系列博文,如果要看具体原理的可以去看看,抽取数据都是大同小异,配置schedule。在此只介绍实现及遇见的一个小小问题。

  1. 启动ES服务,进入ES的安装目录,启动ES服务。
  2. 启动head服务,在命令行窗口进入head的安装目录下,输入 grunt server 即可启动head服务。
  3. 进入到logstash的bin目录下建立一个文件夹叫logstash_jdbc_test,在此文件夹下新建两个文件,一个为oracle.conf,一个为oracle.sql。
    oracle.conf文件内容为:
# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.

input {
  stdin {
  }
  jdbc {
	jdbc_connection_string => "jdbc:oracle:thin:pehsys/pehsys123@//127.0.0.1:1521/orcl"
	jdbc_user => "pehsys"
	jdbc_password => "pehsys123"
	jdbc_driver_library => "D:\download\elasticsearch-6.5.4\lib\ojdbc6.jar"
	jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
	jdbc_paging_enabled => "true"
	jdbc_page_size => "50000"
	statement_filepath => "D:\bigdata\elsaticsearch\logstash-6.5.4\bin\logstash_jdbc_test\oracle.sql"
	schedule => "* * * * *"
	type => "tstype"
  }
}

filter {
	json {
		source => "message"
		remove_field => ["message"]
	}
	date {
		match => ["timestamp","dd/MM/yyyy:HH:mm:ss Z"]
	}
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "peh_user"
    document_id => "%{id}"
  }
  stdout {
	codec => json_lines
  }
}

其中:

jdbc_driver_library为ojdbc6.jar包的位置,你可以随便放。
statement_filepath 为sql文件。
schedule 配置的数据同步机制,最小时间单位为分。* * * * * 表示每分钟更新一次。

oracle.sql文件内容为:

select * from peh_user

在命令行窗口(已在logstash的/bin目录下), 执行logstash.bat -f ./logstash_jdbc_test/oracle.conf 即可。报错日志可以在/logs文件夹下查看。

我遇到一个稍显奇怪的问题,日志我也没了,简单描述一下。我的配置文件是在网上copy的,所以出现了未识别的字符。然后我自己又手动敲了一遍,问题解决。

在浏览器中,输入 http://localhost:9100/ 查看效果:
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42273782/article/details/86573780
今日推荐