资讯专栏INFORMATION COLUMN

MongoDB 数据自动同步到 ElasticSearch

levius / 2495人阅读

摘要:本身是自带文本索引功能的,但是,不支持中文。希望中数据发送变化时自动同步到中,这样就可以最快地用上了。这个是官方的开发人员用写的一个工具,目前支持将的数据同步到中,并且支持用户自己扩展。拓展阅读用实现中文检索使用和实现模糊匹配

我们产品中需要全文检索的功能,后端数据存储主要使用了 MySQL + MongoDB,而其中需要检索的内容是在 MongoDB 中的。

MongoDB 本身是自带文本索引功能的,但是,不支持中文。术业有专攻,MongoDB 是数据存储应用,那么全文检索就使用专业的全文搜索引擎吧。

预选的几个选手有:Solr、ElasticSearch、Xapian、Sphinx、XunSearch。由于我们的数据量比较大,觉得现在单机已经有些力不从心了,MongoDB 也开始计划做分片,那么全文搜索如果自带分布式技能那就最合适不过了。经过一系列的考量,最后,我们就决定用 ElasticSearch 了。

现在后端程序是直接将数据写到 MongoDB 中,我不想修改程序代码,不想在增删改 MongoDB 中数据的同时去增删改 ElasticSearch 中的数据。希望 MongoDB 中数据发送变化时自动同步到 ElasticSearch 中,这样就可以最快地用上 ElasticSearch 了。

刚开始我找到的方案是利用 ElasticSearch 的 River 来同步数据,并在 GitHub 上到了 MongoDB River 插件:elasticsearch-river-mongodb。但是,随后我又在 ElasticSearch 官网上看了这篇博客:《Deprecating Rivers》,官方已经在 1.5 以后的版本弃用 River,为了用户的迁移,会一直保留到 2.0 版本。

于是,我得另寻方案了。然后我又在网上找到了另外一个方案:mongo-connector。这个是 MongoDB 官方的开发人员用 Python 写的一个工具,目前支持将 MongoDB 的数据同步到 Solr、ElasticSearch、MongoDB 中,并且支持用户自己扩展。看到 README 中的免责声明,我有点觉得这是玩票性质的工具,但是还是抱着试试看的心态决定试试看了。

下面是部署过程:

MongoDB 必须开启复制集,如果已经开启请忽略这一步:
配置复制集的名称:mongod --replSet myDevReplSet
在 mongo shell 中初始化复制集:rs.initiate()

安装 ElasticSearch,如果已经安装请忽略这一步。

安装 mongo-connector:
先安装 pip:

yum install python-setuptools && easy_install pip

通过 pip 安装 mongo-connector:

pip install mongo-connector

运行 mongo-connector:

mongo-connector -m 127.0.0.1:27017 -t 127.0.0.1:9200 -d elastic_doc_manager

OK,现在,在 MongoDB 中增删改数据,都能立刻同步到 ElasticSearch 中了。在试用过程中,mongo-connector 退出过两次,其中一次断开太久没有发觉,害我不得不重新同步。还是有点不靠谱的感觉,可能还得专门写个守护程序,让 mongo-connector 一直能在后台好好干活。

拓展阅读:

用 mongodb + elasticsearch 实现中文检索

使用Mongo Connector和Elasticsearch实现模糊匹配

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/18780.html

相关文章

  • 基于nodejs将mongodb数据实时同步elasticsearch

    摘要:一前言因公司需要选用做全文检索,持久化存储选用的是,但是希望里面的数据发生改变可以实时同步到上,一开始主要使用的版本,可以搞定这个问题。或者修改中的某一条数据,也会实时同步到中。如何把的主文档和附件信息都同步到中利用的来实现。 一、前言 因公司需要选用elasticsearch做全文检索,持久化存储选用的是mongodb,但是希望mongodb里面的数据发生改变可以实时同步到elast...

    miya 评论0 收藏0
  • nodejs 实现 磁力链接资源搜索 BT磁力链接爬虫

    摘要:项目简介前端站点项目效果预览使用实现磁力链接爬虫磁力链接解析成种子信息,保存到数据库,利用实现中文检索。搭建磁力链接搜索引擎源码地址后端脚本磁力链接获取磁力链接解析入库定时同步源码地址此项目仅用学习交流技术使用不做商业用途。 项目简介 前端站点 项目效果预览 http://findcl.com 使用 nodejs 实现磁力链接爬虫 磁力链接解析成 torrent种子信息,保存到数据...

    fish 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<