logstash-out-mongodb实现elasticsearch到Mongodb的数据同步

1、前提

1)已经安装好源数据库:elasticsearch V2.X; 2)已经安装好目的数据库:Mongodb; 3)已经安装好logstash及相关插件logstash-output-mongodb

Google、Statckoverflow上充斥着mongdb到elasticsearch同步的文章和问题,而反过来,elasticsearch到mongodb同步的操作做的少之又少。 这也说明了,好的架构设计应该是源数据存储在Mongodb,需要全文检索的时候再同步到ES中进行检索。

但是很显然logstash-out-mongodb插件的用途便是向mongodb写入数据,自然想到将input设置为ES的地址和索引信息即可。

2、同步conf配置详解

 1 [root@la logstash_output_mongo]# cat mongo_out.conf
 2 input {
 3   stdin {
 4   }
 5   elasticsearch {
 6  ‘#ESIP地址与端口
 7   hosts => "100.10.1.35:9200"
 8   ’#ES索引名称(自己定义的)
 9   index => "weibo"
10   ’#自增ID编号
11   ’# document_id => "%{id}"
12   ’#定时字段 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
13   ’#schedule => "* * * * *"
14   ’#设定ES索引类型
15   type => "message"
16   }
17 }
18 
19 filter {
20 json {
21   source => "message"
22   remove_field => ["message"]
23   }
24 }
25 
26 '#目标mongodb地址信息
27   output {
28   stdout { codec => rubydebug }
29   mongodb {
30 ’#目标mongodb集合
31   collection => "weibo"
32 ’#目标库名称
33   database => "data"
34   uri => "mongodb://100.20.12.45:27017"
35   }
36 }

 

3、小结

以上实现了ES中的一个索引Index 与 Mongodb中的一个集合collection之间的全量同步操作。

全量的实现:通过配置源input、目标output地址信息;

增量的实现:待验证。

同步的时候,无需在mongodb做任何操作,同步后,既可以在mongodb的windows客户端:Robomongo看到同步后新增的集合collection

 

posted @ 2017-09-18 10:00  2206  阅读(334)  评论(0编辑  收藏  举报