一种基于mongo数据库的搜索系统技术方案

技术编号:16528952 阅读:18 留言:0更新日期:2017-11-09 20:42
本发明专利技术提供了一种基于mongo数据库的搜索系统,包括elasticsearch集群、mongo数据库、桥接器;所述mongo数据库用于存储elasticsearch集群索引请求、查询请求的数据源并根据规则将数据返回给elasticsearch集群;所述elasticsearch集群用于接收和处理用户的搜索和/或查询请求,通过访问mongo数据库将搜索和/或查询的结果返回给用户;所述桥接器分别与mongo副本集、elasticsearch集群连接,用于实时将mongo数据库的操作转为elasticsearch操作,并更新到elasticsearch集群中。本发明专利技术提供的搜索系统实现elasticsearch和mongo数据库的融合,实现关键字和简单的分析,以及文档搜索,部署快速简单,使用方便。

【技术实现步骤摘要】
一种基于mongo数据库的搜索系统
本专利技术属于计算机领域,涉及一种搜索系统,特别涉及一种基于mongo数据库的搜索系统。
技术介绍
Elasticsearch是建立在Lucene之上并且支持极其快速的查询和丰富的查询语法。作为全文搜索引擎,分析和可视化的特性使它的运用越来越广泛。不仅适用于数百万的文档的关键词进行定位,也可以作为一种轻量级的“NoSQL数据库”处理JSON文档。但是Elasticsearch不是一个合适的数据库引擎,对复杂的查询和聚合并不是很强,尽管统计facet可以提供一定的关于给定查询的统计信息的支持。Elasticsearch中的facet主要是用来支持分面的浏览功能。对于一些更加复杂的计算或数据库操作,例如对数据执行服务端的脚本,轻松地运行MapReducejob,那么MongoDB或者Hadoop就成为替代Elasticsearch成为必要。MongoDB是一种高可扩展性的NoSQL数据库,并且有自动分片或一些性能优化的功能。MongoDB也是一种面向文档的数据库,以JSON的形式进行数据的存储(准确地说可以称为BSON,对JSON进行了一些增强):例如,一个native数据类型。此外,MongoDB还提供了一个文本索引类型来支持全文检索,所以我们可以看到在Elasticsearch和MongoDB之间的界限和不同的应用场景。进一步地,MongoDB超过Elasticsearch的地方在于其对于服务器端js脚本的支持、聚合的管道、MapReduce的支持和cappedcollections。通过使用聚合管道来处理一个集合中的文档,通过一个管道操作的序列来多步地对文档进行处理。管道操作可以生成全新的文档并且从最终的结果中移除文档。这是一个在检索数据时的相当强的过滤、处理和转化数据的特点。MongoDB也支持对一个数据collection进行map/reducejob的执行,使用定制的js函数进行操作的map和reduce过程。这就保证了MongoDB可以对选定的数据执行任意类型的计算或者转换的终极的灵活性。MongoDB另一个极其强大的特性称之为“Cappedcollections”。使用这个特性,用户可以定义一个collection的最大size——然后这个collection可以被盲写,并且会roll-over必须的数据来获取log和其他供分析的流数据。综上,Elasticsearch可以完成关键字和简单的分析;而MongoDB更加适合文档查询,和更加复杂的分析处理;Hadoop虽然提供了最为广泛的工具和灵活性来,但部署复杂、硬件要求高,对于轻量级(PB)的情况下无疑造成了资源的浪费。
技术实现思路
为解决Elasticsearch不能满足复杂的分析,和MongoDB不适用于关键字和简单的分析,本专利技术提供了一种基于mongo数据库的搜索系统,融合了两者的优点,解决了关键字和简单的分析、复杂的后台数据分析的问题。为实现上述目的,本专利技术提供了一种基于mongo数据库的搜索系统,包括elasticsearch集群、mongo数据库、桥接器;所述mongo数据库用于存储elasticsearch集群索引请求、查询请求的数据源并根据规则将数据返回给elasticsearch集群;所述elasticsearch集群用于接收和处理用户的搜索和/或查询请求,通过访问mongo数据库将搜索和/或查询的结果返回给用户;所述桥接器分别与mongo副本集、elasticsearch集群连接,用于实时将mongo数据库的操作转为elasticsearch操作,并将操作下的数据文档更新到elasticsearch集群中。在本专利技术的一个实施例中,所述mongo数据库为副本集集群。在本专利技术的一个实施例中,所述elasticsearch集群包括索引模块、查询模块、映射模块,所述索引模块包括mapping、setting,所述setting控制索引行为,包括自定义过滤器,同义词,停用词以及对应索引的集群配置;所述mapping定义域的关系、存储类型;所述查询模块利用elasticsearch提供RESTful风格接口对elasticsearch进行操作。进一步地,所述索引模块采用动态模板对非关键字字段生成索引映射,对关键字段逐个定义映射关系。进一步地,所述索引模块在导入数据之前使用bulk批量索引,通过设置每次bulk的大小和请求数量,将分片的副本数调整为0。在本专利技术的一个实施例中,所述桥接器包括mongo-connector和elastic2-doc-manager,所述mongo-connector将mongo数据库的操作实时转换为elasticsearch操作,然后发送给elastic2-doc-manager去执行,将数据更新到所述elasticsearch集群中。进一步地,所述mongo-connector在mongo数据库开启副本集模式之后,会在主节点中加入一个oplog文件,所述oplog文件记录了mongo数据库开启副本集模式之后的对数据的所有操作及所有操作的时间戳。进一步地,所述elastic2-doc-manager将elasticsearch操作的请求结构体加入mongo数据库中缺乏的以键值对形指明的关系依赖。更进一步地,所述elastic2-doc-manager根据不同的elasticsearch关系修改请求体函数。更进一步地,所述请求体函数为Upsert函数。本专利技术还提供了实现上述系统的方法,具体步骤如下:S1:搭建mongo副本集,包括相关的服务开启和权限设置;S2:搭建Elasticsearch集群,包括节点角色确定、节点发现方式、索引分片数目确定;S3:分析数据库结构,确定有检索需求的文档;S4:设计Elasticsearch索引结构,包括文档关系、分词方式、字段存储方式和类型、索引setting的设计;S5:从mongo数据库首次导入数据到Elasticsearch,包括JAVA编写、spring管理bean,spring增量更新;S6:编写前段交互业务及接口,包括JAVA编写、spring管理bean,spring控制接口。本专利技术的有益效果是:1.实现elasticsearch和mongo数据库的融合,实现关键字和简单的分析,以及文档搜索,部署快速简单,使用方便。2.利用时间戳的监视,实现elasticsearch的增量索引,减小了服务器的带宽负担,保证了数据的完整性。3.针对elasticsearch请求体的函数可根据实际系统的需求而进行调整,提高了系统的灵活性。附图说明图1是本专利技术的基本原理图;图2是本专利技术的桥接器的结构示意图;图3是本专利技术的elasticsearch框架原理图;图4是本专利技术的mongo数据库副本集原理图;图5是本专利技术的oplog文件结构示意图;图6是本专利技术的桥接器工作流程示意图;图7是本专利技术的Elasticsearch的upsert方法的请求结构体示意图;图8是本专利技术的桥接器未修改结果返回示意图;图9是本专利技术的桥接器修改后的结果返回示意图;图10是本专利技术的成功开启桥接器的Elasticsearch集群效果图;图11是本专利技术的开启增量索引的查本文档来自技高网
...
一种基于mongo数据库的搜索系统

【技术保护点】
一种基于mongo数据库的搜索系统,其特征在于,包括elasticsearch集群、mongo数据库、桥接器;所述mongo数据库用于存储elasticsearch集群索引请求、查询请求的数据源并根据规则将数据返回给elasticsearch集群;所述elasticsearch集群用于接收和处理用户的搜索和/或查询请求,通过访问mongo数据库将搜索和/或查询的结果返回给用户;所述桥接器分别与mongo副本集、elasticsearch集群连接,用于实时将mongo数据库的操作转为elasticsearch操作,并将操作下的数据文档更新到elasticsearch集群中。

【技术特征摘要】
1.一种基于mongo数据库的搜索系统,其特征在于,包括elasticsearch集群、mongo数据库、桥接器;所述mongo数据库用于存储elasticsearch集群索引请求、查询请求的数据源并根据规则将数据返回给elasticsearch集群;所述elasticsearch集群用于接收和处理用户的搜索和/或查询请求,通过访问mongo数据库将搜索和/或查询的结果返回给用户;所述桥接器分别与mongo副本集、elasticsearch集群连接,用于实时将mongo数据库的操作转为elasticsearch操作,并将操作下的数据文档更新到elasticsearch集群中。2.根据权利要求1所述的搜索系统,其特征在于,优选的,所述mongo数据库包括副本集集群。3.根据权利要求1所述的搜索系统,其特征在于,所述elasticsearch集群包括索引模块、查询模块、映射模块,所述索引模块包括mapping、setting,所述setting控制索引行为,包括自定义过滤器、同义词、停用词以及对应索引的集群配置;所述mapping定义域的关系、存储类型;所述查询模块利用elasticsearch提供RESTful风格接口对elasticsearch进行操作。4.根据权利要求3所述的搜索系统,其特征在于,所述索引模块采用动态模板对非关键字字段生成索引映射,对关键字段逐个定义映射关系。5.根...

【专利技术属性】
技术研发人员:马震远李俊林智勇方浩生刘少鹏
申请(专利权)人:广州启辰电子科技有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1