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