基于ElasticSearch的智能搜索系统设计
2021-07-22张晓峰
张晓峰
中国电信MSS集中运营江苏支撑中心
0 引言
随着企业信息量日渐增长,传统的关系数据库查询将不能满足更高的信息检索需求。数据主要使用关系数据库作为存储介质,在模糊查询时,无法使用数据库索引,对数据库的性能影响非常大,多次出现的数据库CPU异常暴增现象,基本都与大表数据的模糊查询有关。因此,必须建立起新的检索方式代替传统关系数据库查询。
搜索系统应支持用户快速检索信息,减少后续开发、运维成本。搜索系统的设计和实现的主要技术点包括:将传统的数据库查询转化为分词查询;将检索信息开发配置化。为了实现上述方案,本文提出了一种 “基于ElasticSearch的智能搜索系统”。
1 系统框架及流程
1.1 系统建设原则
本系统本着实用、先进、可扩展、经济性原则进行建设。(1)实用性,指能最大限度地满足实际工作要求;(2)先进性,指采用当今国内外先进操作架构,使新建立的系统能够最大限度地适应今后业务发展变化的需要;(3)可扩性展,指很方便地扩展检索范围,支持越来越多的信息检索;(4)经济性,指节约成本,提升效率。
1.2 搜索系统的主要应用场景
1.2.1 物料/供应商搜索场景
(1)将供应商、物料数据定时增量采集到索引库。支持供应商、物料快速、精确搜索。用户在统一搜索栏中输入查询关键字,就能查询到经过分词、全文检索的结果,与传统的模糊查询方式进行比较,用户体验明显提升,业务数据库压力也得到缓解。物料、供应商搜索数据采集流程如图1所示。
图1 物料、供应商搜索数据采集流程
(2)定时器轮询供应商、物料数据库。当发现数据有变更(根据时间戳判断)时,将数据抽取到搜索系统,经过数据转换后更新到索引库中。物料、供应商搜索流程如图2所示。
(3)用户输入关键字搜索供应商、物料数据,将调用搜索系统的供应商、物料搜索能力,搜索索引库数据,并将搜索结果展现。
1.2.2 合同搜索场景
(1)将合同数据定时增量采集到索引库,支持合同基本信息(合同编号、合同名称、合同对方名称、合同类型、签约类型、合同正文等)智能化、精确化的全文搜索。用户在统一搜索栏中输入关键字,就能查询到经过分词+全文检索的结果,提升用户体验。(2)定时器轮询合同数据库,当发现数据有变更(根据时间戳判断)时,将数据抽取到平台,经过数据转换后更新到索引库中。(3)用户输入关键字搜索合同数据,将调用基础搜索平台的搜索能力,搜索索引库数据,并展现搜索结果。
2 系统集成架构及其特点
2.1 系统特点
(1)开发配置化:在系统中通过对数据源、转换规则、数据采集策略进行简单的配置,即可实现对应业务信息的全文搜索。(2)服务标准化:利用该系统对所采集的数据进行分析、分词智能加工转换,以标准Restful服务接口对外提供服务调用。(3)调用简单化:对要使用搜索服务的系统,只需要嵌入调用接口,即可将查询结果以JSON方式高亮返回,简化系统调用。
2.2 系统集成架构
为提高MSS检索关键业务信息的速度和效率,搜索系统实现了以下核心内容:基础配置、系统管理、数据采集、搜索能力开放。系统集成架构如图3所示。
图3 系统集成架构
(1)基础配置:第一,数据源配置,为数据采集配置数据来源库,在转换规则中选择数据源;第二,转换规则配置,配置数据抽取规则及ES索引库信息;第三,索引库配置,ES索引库打开、关闭、删除,对索引库的访问权限做配置,只有拥有特定角色权限,才能查询索引库;第四,定时任务管理,配置数据抽取来源、转换规则、执行频率;第五,搜索能力开放,配置外部系统调用时的开关。(2)系统管理:提供用户及角色管理。(3)数据采集:根据转换规则将数据从关系型数据库抽取到索引库。系统主要模块之间的协同如图4所示。
3 系统采用的关键技术
系统采用的关键技术包括:(1)使用Spring-cloud分布式架构,原子化业务分割,减少单点故障。(2)使用JDBC技术,根据配置的数据库类型、IP、端口、SID、用户名、密码信息,完成搜索平台数据抽取源头配置,目前支持Oracle、MySQL等主流关系数据库的抽取。(3)使用ElasticSearch,存储从数据源头抽取到的数据信息。(4)使用Kettle抽取源端数据库数据,实现数据多平台抽取。(5)使用PDFBox读取PDF文件里的信息,转换、写入到索引库,实现非结构化信息检索。(6)使用Quartz技术,完成数据增量抽取定时器配置,实现平台配合化开发。
图4 系统主要模块协同
4 结束语
本文设计的智慧搜索系统,实现了数据库查询向全文搜索的转变,大幅度提高信息检索效率,也实现了信息检索工作的“三化”:(1)开发配置化,将需要增加的业务搜索范围进行简单的配置、开发,即可实现对新业务信息的全文搜索,实现开发配置化;(2)服务标准化,对采集过来的数据进行分析、转换,以标准Restful接口对外提供检索能力,实现服务标准化;(3)调用简单化,对需要使用搜索能力的系统,只需简单嵌入调用接口,即可将查询结果以JSON方式带高亮返回,实现调用简单化。