背景
elasticsearch常用来全文本搜索,而mongodb不太适合做这种文本搜索,因此需要做数据冗余,将需要搜索的数据同步到elasticsearch中。最直接想到的方法就是代码里双写,写到mongodb成功后,再写入到elasticsearch
中,但是这样会带来一些问题,写入的地方可能很多,需要在很多地方都插入写入es的代码,这就导致代码复杂,还会导致数据不一致的问题,如果某些地方漏掉的话。如果我们有一个工具能监听到mongodb的改变,并且
近实时的同步到es中,这样就很方便,省事。
环境
mongodb版本3.4 elasticsearch版本7.3
monstache版本我的选择是4,测试了一下6,但是默认的配置好像不支持mongodb3.x的,需要升级到4.x, 所以选用4了,测试了下7.x版本的es 也能写入,暂时没发现什么问题.
Monstache version | Git branch (used to build plugin) | Docker tag | Description | Elasticsearch | MongoDB |
---|---|---|---|---|---|
3 | rel3 | rel3 | mgo community go driver | Versions 2 and 5 | Version 3 |
4 | master | rel4 (note this used to be latest) | mgo community go driver | Version 6 | Version 3 |
5 | rel5 | rel5 | MongoDB, Inc. go driver | Version 6 | Version 4 |
6 | rel6 | rel6, latest | MongoDB, Inc. go driver | Version 7 | Version 4 |
monstache配置文件
# connection settings
# connect to MongoDB using the following URL
mongo-url