使用 Logstash JDBC 插件同步 MongoDB 和 Elasticsearch 时避免重复
Avoid duplicates while syncing MongoDB and Elasticsearch with Logstash JDBC plugin
我正在尝试使用 Logstash 使 MongoDB 集合与 Elasticsearch 索引保持同步。
为此,我正在使用带有 DBSchema JDBC 驱动程序库的 Logstash JDBC 插件。
这是我用于 logstash 的配置文件:-
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 => "db.collection1.find({ }, { '_id': false })"
}
}
output {
elasticsearch {
hosts => ["http://127.0.0.1:9200"]
index => "testing"
user => ""
password => ""
}
}
这没问题,但是当我 运行 logstash 多次时,记录被多次插入到 Elasticsearch 中。我不想重写记录。此外,如果我再次修改文档和 运行 logstash,它应该会更改 Elasticsearch 中的相同记录,而无需创建新文档。我该如何实现这一目标?
您可以通过 ID 同步您的文档。
这是 link 到 Logstash Elasticsearch output plugin,部分包含您需要的选项。
因此关于文档,您必须将 doc_as_upsert
设置为 true,并在输出中传递 document_id。
output {
elasticsearch {
hosts => ["http://127.0.0.1:9200"]
index => "testing"
user => ""
password => "",
doc_as_upsert => true,
document_id => "%{id}"
}
}
请注意 document_id => "%{id}"
- 这里的 id 是您的文档 ID 字段名称。
我正在尝试使用 Logstash 使 MongoDB 集合与 Elasticsearch 索引保持同步。
为此,我正在使用带有 DBSchema JDBC 驱动程序库的 Logstash JDBC 插件。
这是我用于 logstash 的配置文件:-
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 => "db.collection1.find({ }, { '_id': false })"
}
}
output {
elasticsearch {
hosts => ["http://127.0.0.1:9200"]
index => "testing"
user => ""
password => ""
}
}
这没问题,但是当我 运行 logstash 多次时,记录被多次插入到 Elasticsearch 中。我不想重写记录。此外,如果我再次修改文档和 运行 logstash,它应该会更改 Elasticsearch 中的相同记录,而无需创建新文档。我该如何实现这一目标?
您可以通过 ID 同步您的文档。 这是 link 到 Logstash Elasticsearch output plugin,部分包含您需要的选项。
因此关于文档,您必须将 doc_as_upsert
设置为 true,并在输出中传递 document_id。
output {
elasticsearch {
hosts => ["http://127.0.0.1:9200"]
index => "testing"
user => ""
password => "",
doc_as_upsert => true,
document_id => "%{id}"
}
}
请注意 document_id => "%{id}"
- 这里的 id 是您的文档 ID 字段名称。