monstache是一个Go语言开发的开源工具,可以将MongoDB中的数据实时地导入到Elasticsearch中,从而分析搜索这些数据。
项目地址:https://github.com/rwynn/monstache
2、安装Go语言环境首先需要安装Go语言开发环境。
Go语言安装包下载地址:https://go.dev/
下载之后是一个压缩包。先解压到一个目录中。以Linux系统为例,解压到 /usr/local 目录中。
tar -C /usr/local -xzf go1.14.4.linux-amd64.tar.gz
然后配置环境变量:
export GOROOT=/usr/local/goexport GOPATH=/home/go/export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
在命令行运行:
go version
显示如下版本信息,说明Go语言安装OK了。
go version go1.17.7 linux/amd64
3、安装Monstache首先要先下载Monstache的源代码。
git clone https://github.com/rwynn/monstache.git
再选择合适的Git分支。具体使用哪个分支,可以参照官网的表格。地址是:https://rwynn.github.io/monstache-site/start/
比如ES版本是7.x。需要切换到rel6分支。
git checkout re6
切换分支后,源代码目录运行install命令编译安装。
go install
完成后,运行 monstache 命令测试下。输入 monstache -v 出现版本号就是安装成功了:
> monstache -v6.7.7
4、配置文件配置文件采用toml格式。
官网有样例文件:https://rwynn.github.io/monstache-site/start/
这里提供一个简单的示例:
# mongo连接串mongo-url = "mongodb://127.0.0.1:27017"# ES地址elasticsearch-urls = [ "http://localhost:9200" ]# mydb中completed_food_orders这个collection已经有数据# 需要先将已有数据全量导到ES中direct-read-namespaces = ["mydb.completed_food_orders"]# 同时关注completed_food_orders的数据变化。change-stream-namespaces = ["mydb.completed_food_orders"]# 打印日志verbose = true# 配置collection和es索引的对应关系[[mapping]]namespace = "mydb.completed_food_orders"index = "completed_food_orders"
使用配置文件运行:
monstache -f my.conf
5、常见错误可能会碰到下面这个错误:
Error starting change stream、Will retry: (Location40573) The $changeStream stage is only supported on replica sets
原因是:Change Stream只有在复制集模式下,writeConcern是majority的情况下才会触发。