You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JDBC插件从Oracle同步数据到Elasticsearch仅获少量数据求助

问题描述

我是Elastic新手,尝试将Oracle数据库中的全部数据索引到Elasticsearch,但配置查询后仅同步了少量记录(实际应至少有200+条)。我未自行设置索引映射,以下是我的配置文件、SQL语句及日志信息,请求排查建议:

配置文件

input {
  jdbc {
    jdbc_driver_library => "/usr/share/logstash/logstash-core/lib/jars/ojdbc14.jar"
    jdbc_driver_class => "oracle.jdbc.driver.OracleDriver"
    jdbc_connection_string => "jdbc:oracle:thin:@ip:port/db"
    jdbc_user => "user"
    jdbc_password => "pwd"
    clean_run => true
    record_last_run => false
    statement_filepath => "/etc/logstash/queries/archived.sql"
    schedule => "0 * * * *"
  }
}
filter {
  mutate {
    remove_field => ["@version", "@timestamp"]
  }
}
output {
  elasticsearch {
    hosts => ["http://127.0.0.1:9200"]
    index => "archive-2022-09-22"
    action => "index"
    document_id => "%{id}"
    user => "user"
    password => "pwd"
  }
}

SQL语句文件

select * from archive

Logstash日志

[2022-11-23T15:11:24,811][ERROR][logstash.licensechecker.licensereader] Unable to retrieve license information from license server {:message=>"No Available connections"}
[2022-11-23T15:11:54,808][ERROR][logstash.licensechecker.licensereader] Unable to retrieve license information from license server {:message=>"No Available connections"}
[2022-11-23T15:12:00,398][INFO ][logstash.inputs.jdbc     ][archived][f085843c850992c12e03ee486c086aea9dfd8655b67ab23879b5f69e3fa8f1d5] (0.013649s) select * from archive

[2022-11-23T15:12:24,808][ERROR][logstash.licensechecker.licensereader] Unable to retrieve license information from license server {:message=>"No Available connections"}
[2022-11-23T15:12:54,808][ERROR][logstash.licensechecker.licensereader] Unable to retrieve license information from license server {:message=>"No Available connections"}
[2022-11-23T15:13:00,134][INFO ][logstash.inputs.jdbc     ][archived][f085843c850992c12e03ee486c086aea9dfd8655b67ab23879b5f69e3fa8f1d5] (0.013788s) select * from archive
排查建议
  • 验证SQL查询结果:直接在Oracle客户端执行select count(*) from archive确认实际记录数,同时执行select * from archive检查是否能正常返回所有数据,排查SQL本身或数据库权限问题。
  • 检查JDBC驱动兼容性:ojdbc14.jar属于老旧版本,适配JDK 1.4,可能与当前Logstash使用的JDK版本不兼容。建议更换为匹配Oracle版本的驱动(如ojdbc8.jar适配Oracle 12c+及JDK 8+)。
  • 配置JDBC分页:默认情况下Logstash JDBC输入可能存在分页异常,添加jdbc_paging_enabled => true和jdbc_page_size => 1000(可根据数据量调整)到JDBC输入配置中,强制分页读取数据。
  • 排查文档ID重复问题:输出配置中使用document_id => "%{id}",若Oracle表中id字段有重复值,后续记录会覆盖之前的,导致ES中记录数偏少。可先移除document_id配置,让ES自动生成ID,验证是否能同步所有数据;若必须自定义ID,需确保id字段唯一。
  • 开启DEBUG日志:启动Logstash时添加--log.level debug,查看数据读取、过滤、输出阶段的详细日志,排查是否存在字段解析失败、数据类型不兼容导致的数据丢弃。
  • 验证ES索引状态:执行GET /archive-2022-09-22/_count查看ES中实际文档数,与Oracle记录数对比;执行GET /archive-2022-09-22/_search查看返回文档,确认是否有重复或缺失。
  • 优化数据库连接参数:若表中存在大字段(如CLOB、BLOB),可能出现读取截断或超时。在JDBC配置中添加jdbc_connection_properties => { "defaultRowPrefetch" => "1000", "fetchSize" => "1000" }优化数据读取。

内容的提问来源于stack exchange,提问作者Lucas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 15:10:18