2019独角兽企业重金招聘Python工程师标准>>>

而 elasticsearch 可以很好的支持各种语言的全文检索,但我们暂时又不想切换到 elasticsearch 作为后端数据库。

当然,可以在 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"}}]}}

转载于:https://my.oschina.net/liuyuantao/blog/746202

用 mongodb + elasticsearch 实现中文检索相关推荐

  1. Elasticsearch 4: 相关性检索和组合查询

    目录 1. 相关性评分 2. 相关度模型 2.1 布尔模型 2.2 向量空间模型 2.3 概率模型 2.4 语言模型 3. TF/IDF 4. BM25 4.1 词频饱和度 4.2 长度归一化 5. ...

  2. 【Elasticsearch】Elasticsearch analyzer 中文 分词器

    1.概述 转载: https://blog.csdn.net/tzs_1041218129/article/details/77887767 分词器首先看文章:[Elasticsearch]Elast ...

  3. elasticsearch教程--中文分词器作用和使用

    概述   本文都是基于elasticsearch安装教程 中的elasticsearch安装目录(/opt/environment/elasticsearch-6.4.0)为范例 环境准备 ·全新最小 ...

  4. 为Elasticsearch添加中文分词

    Elasticsearch的中文分词很烂,所以我们需要安装ik.首先从github上下载项目,解压: cd /tmp wget https://github.com/medcl/elasticsear ...

  5. Elasticsearch之中文分词器插件es-ik(博主推荐)

    前提 什么是倒排索引? Elasticsearch之分词器的作用 Elasticsearch之分词器的工作流程 Elasticsearch之停用词 Elasticsearch之中文分词器 Elasti ...

  6. ibatis 模糊查询 mysql_Mybatis使用MySQL模糊查询时输入中文检索不到结果怎么办

    项目开发中,在做Mybatis动态查询时,遇到了一个问题:MySQL在进行LIKE模糊查询时,输入英文可以正常检索出结果,但是输入中文后检索得到的结果为空. 由于是使用GET方式请求,所以为了确保中文 ...

  7. ElasticSearch的中文分词

    一ElasticSearch安装中文分词器 1.1 gitclone https://github.com/medcl/elasticsearch-analysis-ik 1.2 gitcheckou ...

  8. linux php mysql 中文_Linux下PHP+MySQL+CoreSeek中文检索引擎配置 | 系统运维

    说明: 操作系统:CentOS 5.X 服务器IP地址:192.168.21.127 Web环境:Nginx+PHP+MySQL 站点根目录:/usr/local/nginx/html 目的:安装co ...

  9. java es scroll,Elasticsearch Scroll分页检索案例分享

    Elasticsearch Scroll分页检索案例分享 1.准备工作 2.定义scroll检索dsl 首先定义一个简单的scroll dsl检索脚本 { ## 这里都是用常量在操作,实际场景中可以参 ...

最新文章

  1. pandas使用bdate_range函数获取起始时间(start)和结束时间(end)范围内的所有工作日日期(business day)
  2. 杭电 1181 变形课
  3. 动态链接库DLL与静态链接库LIB
  4. spring27: bean装配-基于xml
  5. linux开机启动open,树莓派-linux的多种启动自运行方式
  6. iOS内存管理的知识梳理
  7. python强制转型,python2--python3如何转型
  8. 推荐给java新手的JAVA零基础入门书籍
  9. WPF ListView控件的简单使用
  10. 在定语从句中which和that用法有什么区别
  11. 运放输入偏置电流方向_运放-输入偏置电流与输入失调电流
  12. AT070TN92 电源
  13. 第九届山东理工大学ACM网络编程擂台赛 F题题解
  14. day7-列表和元组
  15. python计算余弦相似度
  16. 玩转#ChatGPT之“用Chat GPT 做出行攻略”
  17. 邀请码:20111221235047_092555,有效期至2011-12-21 23:50:45
  18. Mvvm模式: Databinding 与 ViewModel+LiveData+Repository
  19. UI设计都有哪些分类,UI设计岗位哪个更好
  20. 射频功率计SCPI二次开发程控软件

热门文章

  1. myeclipse 10创建maven项目
  2. OOM分析之问题定位(二)
  3. Centos7 搭建FastDFS文件管理系统及简单的迁移方法
  4. jenkins 邮件配置 二 ***
  5. 使用reveal.js制作PPT,并部署至GitHub
  6. 从经济学与市场机制中,AI可以学到什么?| 美国三院院士迈克尔乔丹教授
  7. javaMP3转pcm 百度语音识别
  8. Flex+J2EE 之小记
  9. 解决SqlServer2008修改表后保存时出现“save changes is not permitted…”问题
  10. jQuery 技术揭秘