Я пытаюсь передать данные из MongoDB в Elasticsearch по конвейеру, используя фильтр отпечатков пальцев для уникальной идентификации каждого документа. Я использую комбинацию двух полей во входном документе MongoDB в качестве источника отпечатка пальца.
input {
jdbc{
jdbc_driver_class => "com.dbschema.MongoJdbcDriver"
jdbc_driver_library => "/path/to/mongojdbc1.8.jar"
jdbc_user => ""
jdbc_password => ""
jdbc_connection_string => "jdbc:mongodb://127.0.0.1:27017/db1"
statement => "db1.coll1.find({ }, {'_id': false})"
}
}
filter {
fingerprint {
source => ["field1_name", "field2_name"]
concatenate_sources => true
target => "[@metadata][fingerprint]"
method => "MURMUR3"
}
}
output {
elasticsearch {
hosts => ["http://127.0.0.1:9200"]
index => "test"
user => ""
password => ""
doc_as_upsert => true
document_id => "%{[@metadata][fingerprint]}"
}
}
Но на выходе я получаю только 1 документ в Elasticsearch, хотя в коллекции MongoDB есть> 1 шт. Я предполагаю, что это связано с тем, что плагин отпечатка пальца использует в качестве источника буквальные строки «field1_name» и «field2_name», а не значения field1_name и field2_name . Как мне это исправить?
Я также пробовал использовать source => "message", но получаю тот же результат.