天天看點

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實時同步深入詳解