JDBC日志存放弹性Kibana

lnvxswe2  于 2022-12-09  发布在  Kibana
关注(0)|答案(1)|浏览(200)

我正在使用JDBC输入插件从mongodb摄取数据到ElasticSearch。我的配置是:

`input {
  jdbc {
    jdbc_driver_class => "mongodb.jdbc.MongoDriver"
    jdbc_driver_library => "/usr/share/logstash/logstash-core/lib/jars/mongodb_unityjdbc_free.jar"
    jdbc_user => ""
    jdbc_password => ""
    jdbc_connection_string => "jdbc:mongodb://localhost:27017/pritunl"
    schedule => "* * * * *"
    jdbc_page_size => 100000
    jdbc_paging_enabled => true
    statement => "select * from servers_output"
  }
}
filter {
mutate {
copy => { "_id" => "[@metadata][id]"}
remove_field => ["_id"]
}
}
output {

     elasticsearch {
        hosts => "localhost:9200"
        index => "pritunl"
        document_id => "%{[@metadata][_id]}"
}
        stdout {}
}`

在Kibana中我只看到一个enter image description here,但是在stdout中我看到了很多来自mongodb集合的记录。我该怎么做,才能看到所有的记录?

inb24sb2

inb24sb21#

问题是,所有的文档都是用相同的“_id”保存的,所以即使你向ES发送了不同的记录,也只有一个文档在内部被覆盖--因此你在Kibana中得到了1次命中。
您的配置中存在导致此问题的打字错误。
您正在将“_id”复制到“[@metadata][**id**]”
但您尝试读取的“[@metadata][**_id**]”带有下划线。
在阅读document_id的值时删除下划线应该可以解决您的问题。

output {
  elasticsearch {
    hosts => "localhost:9200"
    index => "pritunl"
    document_id => "%{[@metadata][id]}"
  }
  stdout {}
}`

相关问题