我正在使用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集合的记录。我该怎么做,才能看到所有的记录?
1条答案
按热度按时间inb24sb21#
问题是,所有的文档都是用相同的“_id”保存的,所以即使你向ES发送了不同的记录,也只有一个文档在内部被覆盖--因此你在Kibana中得到了1次命中。
您的配置中存在导致此问题的打字错误。
您正在将“_id”复制到“[@metadata][**id**]”
但您尝试读取的“[@metadata][**_id**]”带有下划线。
在阅读document_id的值时删除下划线应该可以解决您的问题。