我想将我的MongoDB
数据同步到ElasticSearch
,我读了很多关于Elasticsearch River插件和mongo连接器的文章,但所有这些都不适用于mongo 4和elasticsearch 7! / p>
由于logstash
是专有软件,我想使用它来同步两者...任何人都知道如何做到这一点?
答案 0 :(得分:1)
您可以将MongoDB和Elasticsearch与Logstash同步;实际上,同步是Logstash的主要应用之一。在installing Logstash之后,您要做的就是为用例指定一条 pipeline :一个或多个输入源(在您的情况下为MongoDB)和一个或多个输出宿(在您的Elasticsearch中)情况下),将其作为配置文件(如下示例)放入Logstash的 pipeline 目录中; Logstash负责其余的工作。
Logstash正式提供了许多常用数据源和接收器的插件;这些插件使您可以通过几种配置从各种来源读取数据或将数据写入各种来源。您只需要找到right plugin,install it,然后为您的方案配置它。 Logstash具有Elasticsearch的官方输出插件,其配置非常直观。但是,Logstash不为MongoDB提供任何输入插件。您需要找到第三方。 this one似乎很有前途。
最后,您的管道可能类似于以下内容:
input {
mongodb {
uri => 'mongodb://10.0.0.30/my-logs?ssl=true'
placeholder_db_dir => '/opt/logstash-mongodb/'
placeholder_db_name => 'logstash_sqlite.db'
collection => 'events_'
batch_size => 5000
}
}
output {
stdout {
codec => rubydebug #outputs the same thing as elasticsearch in stdout to facilitate debugging
}
elasticsearch {
hosts => "localhost:9200"
index => "target_index"
document_type => "document_type"
document_id => "%{id}"
}
}