1. Monstache介绍

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/go
export 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 -v
6.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的情况下才会触发。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐