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

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: 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

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
6月前
|
Oracle Java 关系型数据库
【YashanDB知识库】如何配置jdbc驱动使getDatabaseProductName()返回Oracle
【YashanDB知识库】如何配置jdbc驱动使getDatabaseProductName()返回Oracle
|
6月前
|
SQL Oracle Java
【YashanDB知识库】oracle与yashanDB的jdbc返回常量列"0.00"的精度和刻度不一致
本文分析了YashanDB中一个客户遇到的问题:常量列"0.00"在Java中被错误映射为整型而非浮点型,导致查询失败。问题源于Oracle与YashanDB的JDBC驱动对常量列"0.00"精度和刻度处理的差异。在未定义状态下,Oracle返回的精度和刻度值可能导致Java程序误判类型。解决方法是修改Java程序,统一使用Decimal类型接收数据,并根据实际字符类型解析。文章提醒,在从Oracle迁移到YashanDB时,需特别注意数值类型的处理差异,避免类似问题发生。
|
7月前
|
SQL Oracle Java
【YashanDB 知识库】oracle 与 yashanDB 的 jdbc 返回常量列"0.00"的精度和刻度不一致
oracle 数值类型只有 number 类型,float 和 integer 都只是 number 类型的子类。 且 oracle 的类型 number 类型还有未定义状态,此时取精度(precision)和刻度(scale) 都是不准确的,如果是未定义状态,还是通过精度和刻度判断是否能够转换为整型也是不严谨的,
|
SQL Oracle 关系型数据库
WARNING: Too Many Parse Errors With error=911 When Running a JDBC Application Connected to an Oracle 19c database
WARNING: Too Many Parse Errors With error=911 When Running a JDBC Application Connected to an Oracle 19c database (
404 2
|
11月前
|
消息中间件 监控 关系型数据库
MySQL数据实时同步到Elasticsearch:技术深度解析与实践分享
在当今的数据驱动时代,实时数据同步成为许多应用系统的核心需求之一。MySQL作为关系型数据库的代表,以其强大的事务处理能力和数据完整性保障,广泛应用于各种业务场景中。然而,随着数据量的增长和查询复杂度的提升,单一依赖MySQL进行高效的数据检索和分析变得日益困难。这时,Elasticsearch(简称ES)以其卓越的搜索性能、灵活的数据模式以及强大的可扩展性,成为处理复杂查询需求的理想选择。本文将深入探讨MySQL数据实时同步到Elasticsearch的技术实现与最佳实践。
548 0
|
Oracle 关系型数据库 Java
实时计算 Flink版产品使用问题之如何实现Oracle到其他系统的实时同步
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
Oracle Java 关系型数据库
【服务器】python通过JDBC连接到位于Linux远程服务器上的Oracle数据库
【服务器】python通过JDBC连接到位于Linux远程服务器上的Oracle数据库
290 6
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用合集之使用JDBC方式读取Oracle的number类型时,通过什么方式进行映射
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
344 0
实时计算 Flink版产品使用合集之使用JDBC方式读取Oracle的number类型时,通过什么方式进行映射
|
Java 数据库连接 数据处理
实时计算 Flink版产品使用问题之JDBC连接器实时同步的时候如何删除数据吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
canal 缓存 SpringCloudAlibaba
Springcloud Alibaba 使用Canal将MySql数据实时同步到Elasticsearch
本篇文章在Springcloud Alibaba使用Canal将Mysql数据实时同步到Redis保证缓存的一致性-CSDN博客 基础上使用canal将mysql数据实时同步到Elasticsearch。
308 0

推荐镜像

更多