MongoDB数据自动同步到ElasticSearch(实现中文全文检索)
2016-02-25 11:35
846 查看
问题-方案
1.产品需要全文检索,数据库是使用的MongoDB,MongoDB的全文检索太慢,打算使用ElasticSearch
2.方案1:利用 ElasticSearch 的 River 来同步数据,
在github上有MongoDB River的插件:https://github.com/richardwilly98/elasticsearch-river-mongodb。可以看到使用的版本很旧,原因是官方已经在 1.5 以后的版本弃用 River,为了用户的迁移,会一直保留到 2.0 版本。所以这个方案的可行性比较低,但是是可以使用的。
3.方案2:利用mongo-connector,
https://github.com/mongodb-labs/mongo-connector。这个是 MongoDB 官方的开发人员用 Python 写的一个工具,目前支持将 MongoDB 的数据同步到 Solr、ElasticSearch、MongoDB 中,并且支持用户自己扩展。
实际(方案2)
一.安装Elasticsearch并配置
0.MongoDB必须开启复制集 配置复制集的名称:mongod --replSet myDevReplSet 在 mongo shell 中初始化复制集:rs.initiate()
1.下载Elasticsearch,安装java rpm -i xxx sudo service elasticsearch start 出现问题,找不到java home,google发现需要在 /etc/sysconfig/elasticsearch中添加JAVA_HOME=/icksys/jdk1.8.0_72/jre 重新启动服务,works
2.配置mongo-connector 先安装pip: yum install python-setuptools && easy_install pip 通过pip安装mongo-connector pip install mongo-connector
3.运行mongo-connector mongo-connector -m 127.0.0.1:27017 -t 127.0.0.1:9200 -d elastic_doc_manager
二.测试
在mongo容器中写入测试数据use test db.col.insert({name:"王晓明", birth:"1980-01-01"}) db.col.insert({name:"王东东", birth:"1981-01-01"}) db.col.insert({name:"张丽敏", birth:"1982-01-01"})
通过 elasticsearch 容器进行检索
curl -XGET -H 'charset=UTF-8' 127.0.0.1:9200/test/col/_search -d '{ "query" : { "match" : { "name" : "王" } } }'
相关文章推荐
- 分享微信开发Html5轻游戏中的几个坑
- Android之获取手机上的图片和视频缩略图thumbnails
- 如何在 Fedora 上安装 MongoDB 服务器
- PHP添加yaf xhprof mongodb 同理
- mongodb安装
- 数据库链接字符串查询网站
- 如何在 Ubuntu 上安装 MongoDB
- DB2实例管理
- DB2实例管理
- 保障MySQL数据安全的14个最佳方法
- mysql问答汇集
- 信息安全聚合 Sec-News 的重构之路
- 第三章 数据库备份和还原
- 创建一个空的IBM DB2 ECO数据库的方法
- Access 2000 数据库 80 万记录通用快速分页类
- 开通一个数据库失败的原因的和解决办法
- 一个简单的asp数据库操作类
- CentOS下DB2数据库安装过程详解
- EasyASP v1.5发布(包含数据库操作类,原clsDbCtrl.asp)第1/2页