今天总结一下如何使用logstash将Oracle数据导入到Elasticsearch,然后后面会分享怎么在KONGA中配置API接口给用户。
首先要安装好Logstash并且在服务端安装好Elasticsearch!!然后开始操作:
logstash路径:
configs:里面存放配置文件。
libs:存放可能需要使用的jar包。
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;
注意:
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"
}
}
注意:
索引信息:
为了更好的传输数据,在configs路径下创建vr_edition_config文件夹,然后将我们刚刚创建的config放到这个路径下:
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的位置。
先将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访问返回数据做好前提工作。