logstash-input-jdbc实现oracle 与elasticsearch实时同步详解

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: logstash-input-jdbc实现mysql 与elasticsearch的解读之前博文已经解析。本次只是在原有的基础上,针对oracle特性部分做解读。

前言:

logstash-input-jdbc实现mysql 与elasticsearch的解读之前博文已经解析。本次只是在原有的基础上,针对oracle特性部分做解读。
 
目标:
实现了oracle与ES同步增、删、改、查。
 
image.png

1、配置文件

[root@5b9dbaaa148a logstash_jdbc_test]# cat jdbc_oracle.conf
input {
  stdin {
  }
  jdbc {
  # oracle jdbc connection string to our backup databse
  jdbc_connection_string => "jdbc:oracle:thin:system/123456@//100.1.1.31:1521/xe"
  # the user we wish to excute our statement as
  jdbc_user => "system"
  jdbc_password => "123456"
  # the path to our downloaded jdbc driver
  jdbc_driver_library => "/elasticsearch-jdbc-2.3.2.0/lib/ojdbc6.jar"
  # the name of the driver class for oracle
  jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"

  #new add  begin 2016-6-28
  record_last_run => "true"
  use_column_value => "false"
  tracking_column => "id"
  last_run_metadata_path => "/etc/logstash/run_metadata.d/my_info"
  clean_run => "false"
  #new add by end

  jdbc_paging_enabled => "true"
  jdbc_page_size => "50000"
  statement_filepath => "/usr/local/logstash/bin/logstash_jdbc_test/jdbc_oracle.sql"
  schedule => "* * * * *"
  type => "tstype"
  }
}

filter {
  json {
  source => "message"
  remove_field => ["message"]
  }
  #grok {
  #match => { "message" => "%{COMBINEDAPACHELOG}" }
  #match => { "message" => "test" }
#}
  date {
  match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
  }
}

output {
  elasticsearch {
  hosts => "10.8.5.101:9200"
  index => "tsuser"
  document_id => "%{user_id}"
  }
  stdout {
  codec => json_lines
  }
}

[root@5b9dbaaa148a logstash_jdbc_test]# cat jdbc_oracle.sql
select
  *
from
  TS_USER

2、其中:

(1) jdbc_connection_string配置

jdbc_connection_string => "jdbc:oracle:thin:system/123456@//100.1.1.31:1521/xe"
system/123456@// 100.1.1.31:1521 /xe 含义:
用户名/密码@//oracleIP地址:端口/标识符SID

(2) jdbc_driver_library 配置

jdbc_driver_library => "/elasticsearch-jdbc-2.3.2.0/lib/ojdbc6.jar"
ojdbc6.jar所在oracle机器的安装位置如下:
[root@W01 ~]# find / -name "ojdbc6.jar"
/u01/app/oracle/product/11.2.0/xe/jdbc/lib/ojdbc6.jar
ojdbc6.jar 需要ES所在机器放置的位置:
[root@5b9dbaaaa lib]# find / -name "ojdbc6.jar"
/elasticsearch-jdbc-2.3.2.0/lib/ojdbc6.ja

(3) jdbc_driver_class配置

jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"

同步执行脚本:

[root@5b9dbaa148a bin]# ./logstash -f ./logstash_jdbc_test/jdbc_oracle.conf

update,insert测试ok。
 

参考详解(原理同):

http://blog.csdn.net/laoyang360/article/details/51747266
 

NB参考:

http://o7planning.org/en/10227/jdbc-driver-libraries-for-different-types-of-database-in-java


作者:铭毅天下
转载请标明出处,原文地址:http://blog.csdn.net/laoyang360/article/details/51824617

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
存储 SQL Oracle
Oracle使用expdp/impdp实现全库导入导出的整体流程
Oracle的全库导入,首先一点必须先创建数据库,创建了数据库,才能往该数据库导入所有数据。相对来说,使用Oracle进行数据导入导出还很有些“麻烦”的,大多数资料上来就是......
6271 0
Oracle使用expdp/impdp实现全库导入导出的整体流程
|
1天前
|
Oracle Java 关系型数据库
【服务器】python通过JDBC连接到位于Linux远程服务器上的Oracle数据库
【服务器】python通过JDBC连接到位于Linux远程服务器上的Oracle数据库
14 6
|
4月前
|
canal 缓存 SpringCloudAlibaba
Springcloud Alibaba 使用Canal将MySql数据实时同步到Elasticsearch
本篇文章在Springcloud Alibaba使用Canal将Mysql数据实时同步到Redis保证缓存的一致性-CSDN博客 基础上使用canal将mysql数据实时同步到Elasticsearch。
|
5月前
|
Oracle 关系型数据库 数据库
flink oracle cdc实时同步(超详细)
flink oracle cdc实时同步(超详细)
566 0
|
7月前
|
Oracle 关系型数据库 Java
分享一个 Oracle RAC 模式下客户端建立JDBC初始连接时因ONS造成应用启动时卡顿30秒问题的排查分析案例
分享一个 Oracle RAC 模式下客户端建立JDBC初始连接时因ONS造成应用启动时卡顿30秒问题的排查分析案例
|
10月前
|
SQL 存储 Oracle
flink oracle cdc实时同步(超详细)
超详细讲解flink oracle cdc实时同步(含oracle安装配置等)
2224 0
|
12月前
|
Oracle Java 关系型数据库
maven中安装oracle jdbc包到仓库以及引入
maven中安装oracle jdbc包到仓库以及引入
|
SQL Oracle Java
Java java jdbc thin远程连接并操作Oracle数据库
Java java jdbc thin远程连接并操作Oracle数据库
121 0
|
关系型数据库 MySQL 开发工具
Python:使用 mysqlsmom 模块实时同步MySQL数据到ElasticSearch
Python:使用 mysqlsmom 模块实时同步MySQL数据到ElasticSearch
123 0
|
SQL Oracle Java
Jdbc连接Oracle数据库详细案例,占位符的使用
Jdbc连接Oracle数据库详细案例,占位符的使用
269 0
Jdbc连接Oracle数据库详细案例,占位符的使用