【Elasticsearch系列之七】Windows下使用logstash实现Oracle数据到ES的同步
主要参考 https://blog.csdn.net/laoyang360/article/category/6239824/5 系列博文,如果要看具体原理的可以去看看,抽取数据都是大同小异,配置schedule。在此只介绍实现及遇见的一个小小问题。
- 启动ES服务,进入ES的安装目录,启动ES服务。
- 启动head服务,在命令行窗口进入head的安装目录下,输入 grunt server 即可启动head服务。
- 进入到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/ 查看效果: