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

0、前提

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的地址和索引信息即可。


1、同步conf配置详解

[root@la logstash_output_mongo]# cat mongo_out.conf

input {

 stdin {

 }

 elasticsearch {

‘#ESIP地址与端口

 hosts => "100.10.1.35:9200"

 ’#ES索引名称(自己定义的)

 index => "weibo"

 ’#自增ID编号

 ’# document_id => "%{id}"

 ’#定时字段 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新

 ’#schedule => "* * * * *"

 ’#设定ES索引类型

 type => "message"

 }

}


filter {

json {

 source => "message"

 remove_field => ["message"]

 }

}


'#目标mongodb地址信息

 output {

 stdout { codec => rubydebug }

 mongodb {

’#目标mongodb集合

 collection => "weibo"

’#目标库名称

 database => "data"

 uri => "mongodb://100.20.12.45:27017"

 }

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

2、小结

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

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

增量的实现:待验证。

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


3、反过来ES到Mongo如何同步?

详见:mongo-connector实现MongoDB与elasticsearch实时同步深入详解

上一篇:好程序员大数据培训分享Redis与Kafka的区别


下一篇:云端数据仓库的模式选型与建设