使用Logstash同步MongoDB到Elasticsearch遇驱动加载错误求助
解决Logstash同步MongoDB到Elasticsearch的驱动加载错误问题
这个错误的核心原因很明确:你用错驱动了——mongo-java-driver-3.1.0.jar是MongoDB的原生Java驱动,不是JDBC驱动,里面根本不存在mongodb.jdbc.MongoDriver这个类,所以Logstash找不到指定的驱动类,直接报错。
而且JDBC输入是为关系型数据库设计的,MongoDB作为文档型NoSQL数据库,用专门的Logstash插件会更适配、更易用,下面给你两种可行的解决思路:
方法一:使用Logstash官方MongoDB输入插件(推荐)
这是最适合MongoDB同步的方案,支持增量同步、变更捕获等Mongo专属特性,步骤如下:
- 安装插件:打开终端,进入Logstash安装目录,执行安装命令:
- Linux/macOS:
bin/logstash-plugin install logstash-input-mongodb - Windows:
bin\logstash-plugin.bat install logstash-input-mongodb
- Linux/macOS:
- 替换配置文件:把原有的JDBC输入换成mongodb输入,示例配置如下:
input { mongodb { uri => "mongodb://localhost:27017/my_db" collection => "your_collection" # 替换成你要同步的Mongo集合名 batch_size => 1000 # 可选,批量读取的文档数量 codec => "json" # 将Mongo文档解析为JSON格式 } } output { elasticsearch { hosts => ["localhost:9200"] index => "orders" document_id => "%{_id}" # 可选,用Mongo的_id作为ES文档ID,避免重复同步 } }
方法二:使用MongoDB官方JDBC驱动(不推荐,仅作备选)
如果你坚持要用JDBC输入,需要替换成MongoDB官方的JDBC驱动,而非原生Java驱动:
- 下载正确的驱动:去MongoDB官网下载对应版本的JDBC驱动(比如
mongo-jdbc-driver-3.12.11.jar,注意版本要和你的MongoDB服务器兼容) - 修正配置文件:
input { jdbc { # 替换为JDBC驱动的正确路径,注意Windows路径用正斜杠或双反斜杠 jdbc_driver_library => "D:/1SearchEngine/data/mongo-jdbc-driver-3.12.11.jar" jdbc_driver_class => "com.mongodb.jdbc.MongoDriver" # 正确的JDBC驱动类名 jdbc_connection_string => "jdbc:mongodb://localhost:27017/my_db" jdbc_user => "" statement => "SELECT * FROM your_collection" # 必须指定具体集合,不能用* } } output { elasticsearch { hosts => ["localhost:9200"] index => "orders" } }
额外注意事项
- 确保驱动Jar包的路径正确,Windows系统下尽量用正斜杠
/或者转义后的反斜杠\\,避免路径解析失败 - 驱动版本要和你的MongoDB服务器版本匹配,比如MongoDB 4.x建议搭配3.12+版本的JDBC驱动
- 若使用MongoDB输入插件,要保证你的Logstash版本支持该插件(Logstash 7.x及以上版本均支持)
内容的提问来源于stack exchange,提问作者Karthikeyan
相关产品推荐
相关产品推荐

