ES-MongoDB学习6_用 mongodb + elasticsearch 实现中文检索
2016-04-07 17:16
986 查看
而 elasticsearch 可以很好的支持各种语言的全文检索,但我们暂时又不想切换到 elasticsearch 作为后端数据库。
当然,可以在 web 应用中存储数据的时候,再主动写一份到 elasticsearch,但这无疑污染了原有的业务逻辑。
在 IT 行业,只要有需求的地方,必然早已有了一堆好用或者不好用的开源轮子。
幸运地是,现在已经有了一些转换方案,可以将 mongodb 中的数据自动导入到 elasticsearch 中,让 elasticsearch 提供中文智能检索。
转换方案主要包括 river 和 mongo-connector。前者已经不再维护了,后者则得到了 mongo 官方的支持,因此选用它作为转换方案。
基于 python 编写,安装和使用都十分简单。
auto-commit-interval 是提交延迟,0 表示即时写入,-m 和 -t 分别指定 mongo 和 elasticsearch 地址即可。
需要注意的是,mongo 需要配置为 cluster 模式。
用户可以自行配置 mongo 和 elasticsearch 环境,并通过 mongo-connector 连接起来。
这里已经提供好了 docker-compose 模板,可以使用 docker 容器一键创建包括 mongo、mongo-connector、elasticserach 的环境。需要提前安装 Docker 和 docker-compose 环境。
通过
在 mongo 容器中写入数据
通过 elasticsearch 容器进行检索
原文地址:/article/1813390.html
当然,可以在 web 应用中存储数据的时候,再主动写一份到 elasticsearch,但这无疑污染了原有的业务逻辑。
在 IT 行业,只要有需求的地方,必然早已有了一堆好用或者不好用的开源轮子。
幸运地是,现在已经有了一些转换方案,可以将 mongodb 中的数据自动导入到 elasticsearch 中,让 elasticsearch 提供中文智能检索。
转换方案主要包括 river 和 mongo-connector。前者已经不再维护了,后者则得到了 mongo 官方的支持,因此选用它作为转换方案。
mongo-connector
基于 python 编写,安装和使用都十分简单。$ pip install mongo-connector $ mongo-connector --auto-commit-interval=0 -m mongo:27017 -t elasticsearch:9200 -d elastic_doc_manager
auto-commit-interval 是提交延迟,0 表示即时写入,-m 和 -t 分别指定 mongo 和 elasticsearch 地址即可。
需要注意的是,mongo 需要配置为 cluster 模式。
配置环境
用户可以自行配置 mongo 和 elasticsearch 环境,并通过 mongo-connector 连接起来。这里已经提供好了 docker-compose 模板,可以使用 docker 容器一键创建包括 mongo、mongo-connector、elasticserach 的环境。需要提前安装 Docker 和 docker-compose 环境。
$ git clone https://github.com/yeasy/docker-compose-files.git $ cd mongo-elasticsearch; docker-compose up
通过
docker inspect container_id |grep Addr可以查看容器的 IP 地址。
测试
在 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' elasticsearch:9200/test/col/_search -d '{ "query" : { "match" : { "name" : "王" } } }' {"took":74,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":2,"max_score":0.5,"hits":[{"_index":"test","_type":"col","_id":"55d6d4640e247e587cfc73ca","_score":0.5,"_source":{"name": "\u738b\u4e1c\u4e1c", "birth": "1981-01-01"}},{"_index":"test","_type":"col","_id":"55d6d45d0e247e587cfc73c9","_score":0.15342641,"_source":{"name": "\u738b\u6653\u660e", "birth": "1980-01-01"}}]}}
原文地址:/article/1813390.html
相关文章推荐
- 故障案例 mongodb configserver启动失败
- mongodb与mysql相比的优缺点
- mongodb
- [MongoDB] MongoDB增删查改
- MongoDB官网重要网址记录
- MongoDB可视化工具RoboMongo----Windows安装
- Mongodb上一次非正常关闭后修复
- MongoDB设置访问权限、设置用户
- Linux下mongodb的安装及启动
- ES-MongoDB学习5_使用Mongo Connector和Elasticsearch实现模糊匹配
- MongoDB3.0后的数据库安全认证
- 在Windows7下启动MongoDB服务的解决方案
- win7启动本地MongoDB的四种方式
- MongoDB的简单操作(asp.net)
- ES-MongoDB学习4_mongo-connector原理及改造
- MongoDB的简介及安装
- node.js中如何使用mongodb数据库
- MongoDB快速学习
- mongoDB window平台安装MongoDB
- MongoDB 3.0新增特性一览