如何使用logstash将mongodb集合与elasticseatch索引同步



我正在字符串中使用logstash-7.6.2将我的mongo与elasticsearch同步。我使用的是dbschema-jdbc驱动程序。

input {
jdbc{
jdbc_driver_class => "com.dbschema.MongoJdbcDriver"
jdbc_driver_library => "/home/user/mongojdbc2.3.jar,/home/user/mongo-java-driver-3.12.6.jar,/home/user/gson-2.8.6.jar"
jdbc_user => ""
jdbc_password => ""
jdbc_connection_string => "jdbc:mongodb://localhost:27027/test"
statement => "db.mycollection.find()"
}
}
output {
elasticsearch {
hosts => ["http://localhost:9220"]
manage_template => false
index => "testing"
}
stdout { codec => rubydebug }
}

但我发现了下一个错误:

错误:Java::JavaSql::SQLException:找不到适合的驱动程序jdbc:mongodb://localhost:27027/test异常:Sequel::DatabaseConnectionError堆栈:java.sql.DriverManager.getConnection(java/sql/DriverManager.java:689(java.sql.DriverManager.getConnection(java/sql/DriverManager.java:247(

我还尝试使用mongo本机java驱动程序和unityjdbc驱动程序。我还尝试使用不同版本的mongo,从本地主机和远程服务器进行了尝试。我试着使用不同版本的logstash。一切都归结为这个错误。

我在将MongoDB与Elastic同步时遇到了同样的问题,我想与您分享我的经验。我尝试过的:

  1. Longstash输入MongoDB插件最简单的集成方式,需要最少的配置。但它不支持";对象阵列";,它只是镜像了这个数据结构。您可以使用ruby脚本(转换arr: [{a: 1, b: 2}, {a: 3, b: 4}]->arr_1_a = 1, arr_1_b = 2, ...,依此类推(在筛选阶段将它们压平
  2. Logstash+jdcb-mongo驱动程序问题是,关于这个连接的所有提及和说明都有点过时,并且都不包含到必要的Mongo库的链接。这些指令中使用的库已经更新了很多次。当然,我们可以选择搜索旧版本,但它们不支持最近的MongoDB版本。我花了几天时间迭代了几十种不同的选项(wisecoder-dbschema、unity驱动程序和许多其他选项(。我打开了每一个库来研究Java类的正确路径,但没有一个有效:每次我遇到不同的错误时(最流行的是No suitable driver found for jdbc:mongodb(
  3. 怪物这是我最后的希望,它完美地发挥了作用。我所要做的唯一一件事就是将我的Mongo实例转换为ReplicaSet(它可以是dev-puprose的单个节点(,并为monstach准备简单的.toml配置。此外,它还有现成的Docker镜像。所以我个人可以推荐使用monstach进行Mongo+Elastic同步

希望这对你有所帮助。

最新更新