今天总结一下如何使用logstash将Oracle数据导入到Elasticsearch,然后后面会分享怎么在KONGA中配置API接口给用户。
首先要安装好Logstash并且在服务端安装好Elasticsearch!!然后开始操作:
1、进入logstash路径
logstash路径:
configs:里面存放配置文件。
libs:存放可能需要使用的jar包。
sql:存放sql文件
2、进入sql路径下,创建sql并编辑
cd ./sql
vim GXJX_KCSJLB.sql
通篇我讲其中一个具体的例子,某高校的课程数据类数据(GXJX_KCSJLB):
在这个GXJX_KCSJLB.sql文件中输入我们的查询数据指令:
select 'gxjx_kcsjlb' as es_index,ROWNUM,KCH,KCMC,KCYWMC,XF,ZHXS,ZXS,LLXS,SYXS,KCJJ,JC,CKSM,KCFZRH,KCKSDWH,SJXS,KCJXDG,KCJBM,KCLBM,KCLXM,SFTK,TKRQSJ,KSRQSJ,ZHGXSJ,SCBZ,KCXZ,KKBMDM from GXJX_KCSJLB;
注意:
- 我们定义的 es_index 会在configs文件中配置为es的索引,不能使用大写字母,否则会导致不能识别。
- 注意如果是从Oracle数据库中使用数据,可以加上ROWNUM这个属性。在config配置中与 document_id 对应。sql指令后面可以不带封号。
3、进入configs路径下,创建config文件并编辑
cd ./configs
vim GXJX_KCSJLB.config
GXJX_KCSJLB.config 配置文件内容:
input {
jdbc {
jdbc_driver_library => "/home/logstash/libs/ojdbc6-11.1.0.6.0.jar"
jdbc_driver_class => "Java::oracle.jdbc.OracleDriver"
jdbc_connection_string => "jdbc:oracle:thin:@192.168.99.19:1521:jcxydb"
jdbc_user => "sjbzk"
jdbc_password => "sjbzk"
schedule => "* * * * *"
statement_filepath => "/home/logstash/sql/GXJX_KCSJLB.sql"
}
}
filter {
#以下grok和date添加了时区信息,解决后续创建index时的时区差8个区的问题
json {
source => "message"
remove_field => ["message"]
}
}
output {
elasticsearch {
hosts => [ "192.168.102.17:9200","192.168.102.18:9200","192.168.102.19:9200" ]
index => "%{es_index}_index"
document_type => "doc"
document_id => "%{kch}"
#elasticsearch 的用户名与密码
user => "logstash_internal"
password => "logstash@PWD2020"
}
}
注意:
- schedule中的值意思是一分钟执行一次。
- statement_filepath中填写我们之前创建好对应的sql路径。
- index => "%{es_index}_index"中“es_index”是之前在sql文件中定义新增的列,作为这里的索引,具体效果如下图。
- document_id => "%{kch}"中的kch虽然表中是大写,但是这里要转为小写,不然不能识别。
索引信息:
4、在configs路径下创建vr_edition_config文件夹
为了更好的传输数据,在configs路径下创建vr_edition_config文件夹,然后将我们刚刚创建的config放到这个路径下:
5、修改logstash的配置文件
vim /etc/logstash/pipelines.yml
添加内容:
pipeline.id: vr_edit
pipeline.workers: 1
pipeline.batch.size: 1
path.config: "/home/logstash/configs/vr_edition_config/*.config"
这里配置path.config,将配置路径指向我们存放config的位置。
6、重新启动logstash并查看运行日志
先将logstash关闭,时间可能比较长,耐心等待:
service logstash stop
重新启动:
service logstash start
其中如图有错误或者问题可以查看logstash的运行日志:
tail -f /var/log/logstash/logstash-plain.log
报错的话,也可以的查看报错信息:
vim /var/log/messages
然后可以打开 http://192.168.102.17:9200/_plugin/head/ 中的Elasticsearch查看到刚刚导入的数据:
可以通过基本查询查看里面详细的信息:
为后面使用KONGA通过API访问返回数据做好前提工作。