Использование фильтра отпечатков пальцев logsta sh с вводом MongoDB - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь передать данные из 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", но получаю тот же результат.

...