CN108874924A - 搜索服务的创建方法、装置及计算机可读存储介质 - Google Patents
搜索服务的创建方法、装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN108874924A CN108874924A CN201810547316.0A CN201810547316A CN108874924A CN 108874924 A CN108874924 A CN 108874924A CN 201810547316 A CN201810547316 A CN 201810547316A CN 108874924 A CN108874924 A CN 108874924A
- Authority
- CN
- China
- Prior art keywords
- index
- interface
- search
- creation
- database
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种搜索服务的创建方法,该方法包括:获取用户上传的数据库格式的建表语句,根据建表语句生成待创建的搜索引擎的Schema文件;根据Schema文件创建索引库;为搜索引擎分配空闲的实时分布式搜索和分析引擎ElasticSearch集群;根据Schema文件生成搜索引擎的索引操作接口,索引操作接口包括索引创建接口、索引删除接口和搜索接口;将创建的索引库和索引操作接口发布到maven仓库,并以接口服务的形式暴露搜索引擎的索引和搜索功能。本发明还提出一种搜索服务的创建装置以及一种计算机可读存储介质。本发明提高了创建搜索服务的效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种搜索服务的创建方法、装置及计算机可读存储介质。
背景技术
搜索引擎是指根据一定的策略、运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将用户检索相关的信息展示给用户的系统。一个完整的搜索服务是由数据源、索引服务、搜索服务、日志监控服务、和管理平台组成,不同的业务数据搜索服务都对应着不同的数据源、不同的索引流程。现有的建立搜索服务的方法一般是,由开发人员开发一套完整的服务代码实现搜索服务,开发周期长,导致搜索服务的创建效率低下。
发明内容
本发明提供一种搜索服务的创建方法、装置及计算机可读存储介质,其主要目的在于提高创建搜索服务的效率。
为实现上述目的,本发明还提供一种搜索服务的创建方法,该方法包括:
获取用户上传的数据库格式的建表语句,根据所述建表语句生成待创建的搜索引擎的Schema文件;
为搜索引擎分配空闲的实时分布式搜索和分析引擎ElasticSearch集群;
根据所述Schema文件创建索引库;
根据Schema文件生成搜索引擎的索引操作接口,所述索引操作接口包括索引创建接口、索引删除接口和搜索接口;
将创建的索引库和所述索引操作接口发布到maven仓库,并以接口服务的形式暴露搜索引擎的索引和搜索功能。
可选地,所述获取用户上传的数据库格式的建表语句,根据所述建表语句生成待创建的搜索引擎的Schema文件的步骤包括:
获取用户上传的数据库格式的建表语句;
确定待创建的搜索引擎对应的ElasticSearch字段类型;
解析所述建表语句的结构,识别出所述建表语句中包含的库名、字段名和字段属性列表;
根据预先设置的字段类型与ElasticSearch字段类型之间的映射关系表,将识别出的字段名对应的转换为与ElasticSearch字段类型匹配的字段;
将转换后的字段与所述库名、所述字段属性列表组合成所述Schema文件。
可选地,所述根据Schema文件生成搜索引擎的索引操作接口,所述索引操作接口包括索引创建接口、索引删除接口和搜索接口的步骤包括:
解析生成的Schema文件,获取所述Schema文件中的所有字段,根据获取的字段生成model类;
根据所述model类生成索引创建接口、索引删除接口以及与所述索引创建接口对应的创建响应类、与所述删除接口对应的删除响应类;
确定所述Schema文件中的所有字段中被定义成可用于搜索的字段列表,并根据所述可用于搜索的字段列表和所述model类生成搜索接口和与所述搜索接口对应的搜索响应类。
可选地,所述将创建的索引库和所述索引操作接口发布到maven仓库,并以接口服务的形式暴露搜索引擎的索引和搜索功能的步骤之后,所述方法还包括步骤:
对数据库的日志数据进行监控,判断所述数据库中是否有数据更新操作;
若检测到所述数据库中有数据更新操作,则获取所述数据库中的更新数据,并通过所述索引创建接口将所述更新数据更新到索引库。
可选地,所述方法还包括步骤:
对所述索引操作接口在单位时间内的调用量进行实时监测;
若检测到有索引操作接口在单位时间内的调用量大于与该索引操作接口对应的预设流量阈值,则对超出所述预设流量阈值的调用请求返回错误提示信息。
此外,为实现上述目的,本发明还提供一种搜索服务的创建装置,该装置包括存储器和处理器,所述存储器中存储有可在所述处理器上运行的搜索服务的创建程序,所述搜索服务的创建程序被所述处理器执行时实现如下步骤:
获取用户上传的数据库格式的建表语句,根据所述建表语句生成待创建的搜索引擎的Schema文件;
为搜索引擎分配空闲的实时分布式搜索和分析引擎ElasticSearch集群;
根据所述Schema文件创建索引库;
根据Schema文件生成搜索引擎的索引操作接口,所述索引操作接口包括索引创建接口、索引删除接口和搜索接口;
将创建的索引库和所述索引操作接口发布到maven仓库,并以接口服务的形式暴露搜索引擎的索引和搜索功能。
可选地,所述获取用户上传的数据库格式的建表语句,根据所述建表语句生成待创建的搜索引擎的Schema文件的步骤包括:
获取用户上传的数据库格式的建表语句;
确定待创建的搜索引擎对应的ElasticSearch字段类型;
解析所述建表语句的结构,识别出所述建表语句中包含的库名、字段名和字段属性列表;
根据预先设置的字段类型与ElasticSearch字段类型之间的映射关系表,将识别出的字段名对应的转换为与ElasticSearch字段类型匹配的字段;
将转换后的字段与所述库名、所述字段属性列表组合成所述Schema文件。
可选地,所述根据Schema文件生成搜索引擎的索引操作接口,所述索引操作接口包括索引创建接口、索引删除接口和搜索接口的步骤包括:
解析生成的Schema文件,获取所述Schema文件中的所有字段,根据获取的字段生成model类;
根据所述model类生成索引创建接口、索引删除接口以及与所述索引创建接口对应的创建响应类、与所述删除接口对应的删除响应类;
确定所述Schema文件中的所有字段中被定义成可用于搜索的字段列表,并根据所述可用于搜索的字段列表和所述model类生成搜索接口和与所述搜索接口对应的搜索响应类。
可选地,所述搜索服务的创建程序还可被所述处理器执行,以在所述将创建的索引库和所述索引操作接口发布到maven仓库,并以接口服务的形式暴露搜索引擎的索引和搜索功能的步骤之后,还实现步骤:
对数据库的日志数据进行监控,判断所述数据库中是否有数据更新操作;
若检测到所述数据库中有数据更新操作,则获取所述数据库中的更新数据,并通过所述索引创建接口将所述更新数据更新到索引库。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有搜索服务的创建程序,所述搜索服务的创建程序可被一个或者多个处理器执行,以实现如上所述的搜索服务的创建方法的步骤。
本发明提出的搜索服务的创建方法、装置及计算机可读存储介质,获取用户上传的数据库格式的建表语句,根据建表语句生成待创建的搜索引擎的Schema文件;根据Schema文件创建索引库;为搜索引擎分配空闲的实时分布式搜索和分析引擎ElasticSearch集群;根据Schema文件生成搜索引擎的索引操作接口,索引操作接口包括索引创建接口、索引删除接口和搜索接口;将创建的索引库和索引操作接口发布到maven仓库,并以接口服务的形式暴露搜索引擎的索引和搜索功能。通过上述过程,无需用户编写完整的服务代码,当需要创建新的搜索服务时,用户上传建表语句,根据对建表语句的解析,生成待创建的搜索引擎的Schema文件,进而创建索引库和搜索引擎的索引和搜索功能的接口,实现搜索引擎的创建,提高搜索服务的创建效率。
附图说明
图1为本发明一实施例提供的搜索服务的创建方法的流程示意图;
图2为本发明一实施例提供的搜索服务的创建装置的内部结构示意图;
图3为本发明一实施例提供的搜索服务的创建装置中搜索服务的创建程序的模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种搜索服务的创建方法。参照图1所示,为本发明一实施例提供的搜索服务的创建方法的流程示意图。该方法可以由一个装置执行,该装置可以由软件和/或硬件实现。
在本实施例中,搜索服务的创建方法包括:
步骤S10,获取用户上传的数据库格式的建表语句,根据所述建表语句生成待创建的搜索引擎的Schema文件。
本发明实施例中,统一建库语句,将创建索引库的语句抽象成符合数据库DDL(schema data definition language,模式数据定义语言)规范格式的建表语句。这种建表语句符合SQL(Structured Query Language,结构化查询语言)规范,能够屏蔽用户感知底层搜索引擎,统一不同底层搜索引擎的建库语句,支持对不同业务数据快速建立通用的搜索服务。
例如,现在要创建一个针对医疗数据系统的搜索服务,该搜索服务可以提供医疗数据系统中的多个业务系统数据的搜索。其建表语句举例如下:
具体地,获取用户上传的数据库格式的建表语句,根据所述建表语句生成待创建的搜索引擎的Schema文件的步骤包括:
获取用户上传的数据库格式的建表语句;
确定待创建的搜索引擎对应的ElasticSearch字段类型;
解析所述建表语句的结构,识别出所述建表语句中包含的库名、字段名和字段属性列表;
根据预先设置的字段类型与ElasticSearch字段类型之间的映射关系表,将识别出的字段名对应的转换为与ElasticSearch字段类型匹配的字段;
将转换后的字段与所述库名、所述字段属性列表组合成所述Schema文件。
用户只需要创建数据库格式的建表语句并上传即可。此外,用户在创建数据库格式的建表语句的同时,选择的底层搜索引擎。
当搜索服务的创建装置接收到用户上传的建表语句时,获取用户选择的底层搜索引擎,根据底层搜索引擎确定要生成的建库语句的字段类型,例如,对于full_text类型,如果底层搜索引擎是ElasticSearch2.x,则映射到为String类型的字段,如果底层搜索引擎是ElasticSearch5.x,则映射为text类型的字段。当接收到用户上传的建表语句时,通过SQL解析器,解析用户上传的DDL语句,识别出所述建表语句中包含的库名、字段名和字段属性列表;根据预先设置的字段类型和ES的字段类型映射关系表,逐个地将字段转换为与底层搜索引擎对应的建库语句,然后拼接库名、字段属性列表形成完整的语句,即为最终的schema文件。
步骤S20,为搜索引擎分配空闲的实时分布式搜索和分析引擎ElasticSearch集群。
步骤S30,根据所述Schema文件创建索引库。
底层搜索引擎提供了创建索引库的方式,不同的搜索引擎有不同的创建方式。本实施例中优选地采用ElasticSearch作为底层搜索引擎,在生成Schema文件后,分配空闲的ElasticSearch集群,其中,ElasticSearch是一个基于Lucene的搜索服务器,是实时分布式搜索和分析引擎,它提供了一个分布式多用户能力的全文搜索引擎,基于restful接口,restful接口是一种基于REST(Representational State Transfer,表述性状态转移,简称REST)架构风格的接口。因此,ElasticSearch提供了Restful的接口来创建索引库,创建装置访问其对应的Restful接口时传入生成的schema文件,就能完成索引库的创建。
步骤S40,根据Schema文件生成搜索引擎的索引操作接口,所述索引操作接口包括索引创建接口、索引删除接口和搜索接口。
具体地,解析生成的Schema文件,获取所述Schema文件中的所有字段,根据获取的字段生成model类,生成的model类为Java格式的POJO(Plain Ordinary Java Object,简单的Java对象)类;其中,多值字段用数组或者集合类型表示。根据所述model类生成索引创建接口以及与所述索引创建接口对应的创建响应类,索引创建接口包含模型数据、接口名称、版本信息、动作发生时间信息;创建响应类包含创建索引响应成功信息和响应失败信息。根据所述model类生成以及与所述索引删除接口对应的删除响应类;确定所述Schema文件中的所有字段中被定义成可用于搜索的字段列表,并根据所述可用于搜索的字段列表和所述model类生成搜索接口和与所述搜索接口对应的搜索响应类。索引创建接口支持对索引数据的创建与修改,搜索接口提供搜索服务,索引删除接口支持对索引数据的删除。用户可以通过索引创建接口和索引删除接口对索引数据进行增删改操作。
步骤S50,将创建的索引库和所述索引操作接口发布到maven仓库,并以接口服务的形式暴露搜索引擎的索引和搜索功能。
在索引库和索引操作接口创建完成之后,将对应的代码发布到maven仓库,并接收用户通过引入操作上传的jar包(Java Archive File,Java档案文件)依赖,将索引和搜索功能以接口服务的形式自动暴露出来,完成搜索服务的构建。maven是Apache开源社区推出的一款基于项目对象模型的,可通过描述信息来管理项目的构建、报告和文档的软件项目管理工具,它是目前使用非常广泛且拥有较多插件的软件项目管理工具。maven的使用依赖于maven仓库,在项目中使用maven管理jar包有两种情况较常见:一是从maven库中下载java项目所依赖的jar包;二是将本身的项目生成jar包上传至maven仓库。在maven中,任何一个依赖、插件或者项目构建的输出,都可以称为构建,maven可以在某个位置统一存储所有的maven项目共享的构建,这个统一的位置就是仓库,项目构建完毕后生成的构建也可以安装或者部署到仓库中,供其它项目使用。
进一步地,在其他实施例中,本发明的方法还可以实现对索引操作接口限流和降级功能,具体地,预先为每一个接口预先设置流量阈值,当单位时间内的接口调用量超过预设的流量阈值,则返回错误,以实现限流。对于写接口操作,如索引创建接口,当检测到系统的写线程池消耗过度,将写索引操作转为异步操作,先将请求结果返回给用户,再异步执行写索引操作,以保证数据的最终一致性(在正常情况下,写操作会在将请求结果返回给用户之前完成,即实现同步操作);对于读接口操作,如搜索接口,当检测到系统压力大于预设阈值或者底层存储引擎不可用时,返回最近一次调用成功的缓存数据。
进一步地,在另一实施例中,本发明的方法还支持ElasticSearch集群的动态切换,用户可以根据需要调整索引库和ElasticSearch集群的对应关系。具体地,在管理页面提供编辑索引库的集群的控件,当检测到用户基于该控件触发的编辑指令时,展示集群编辑界面,以供用户基于集群编辑界面选择新的集群。当侦测到用户基于刷新控件触发的切换指令时,根据数据库中存储的建库语句,按照上述实施例中的方式在新的集群中重新建立索引库,并查询原始集群中的数据,将这些数据通过写索引接口写入到新的集群中,并且在新的集群建立完成后,将接收到的所有该索引库相关的请求都转发到新集群上操作,以实现集群的动态切换。
本实施例提出的搜索服务的创建方法,获取用户上传的数据库格式的建表语句,根据建表语句生成待创建的搜索引擎的Schema文件;根据Schema文件创建索引库;为搜索引擎分配空闲的实时分布式搜索和分析引擎ElasticSearch集群;根据Schema文件生成搜索引擎的索引操作接口,索引操作接口包括索引创建接口、索引删除接口和搜索接口;将创建的索引库和索引操作接口发布到maven仓库,并以接口服务的形式暴露搜索引擎的索引和搜索功能。通过上述过程,无需用户编写完整的服务代码,当需要创建新的搜索服务时,用户创建数据库格式的建表语句并上传,根据对建表语句的解析,生成待创建的搜索引擎的Schema文件,进而创建索引库和搜索引擎的索引和搜索功能的接口,实现搜索引擎的创建,提高搜索服务的创建效率。
本发明还提供一种搜索服务的创建装置。参照图2所示,为本发明一实施例提供的搜索服务的创建装置的内部结构示意图。
在本实施例中,搜索服务的创建装置1可以是PC(Personal Computer,个人电脑),也可以是智能手机、平板电脑、便携计算机等终端设备。该搜索服务的创建装置1至少包括存储器11、处理器12,通信总线13,以及网络接口14。
其中,存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是搜索服务的创建装置1的内部存储单元,例如该搜索服务的创建装置1的硬盘。存储器11在另一些实施例中也可以是搜索服务的创建装置1的外部存储设备,例如搜索服务的创建装置1上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器11还可以既包括搜索服务的创建装置1的内部存储单元也包括外部存储设备。存储器11不仅可以用于存储安装于搜索服务的创建装置1的应用软件及各类数据,例如搜索服务的创建程序01的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行搜索服务的创建程序01等。
通信总线13用于实现这些组件之间的连接通信。
网络接口14可选的可以包括标准的有线接口、无线接口(如WI-FI接口),通常用于在该装置1与其他电子设备之间建立通信连接。
可选地,该装置1还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在搜索服务的创建装置1中处理的信息以及用于显示可视化的用户界面。
图2仅示出了具有组件11-14以及搜索服务的创建程序01的搜索服务的创建装置1,本领域技术人员可以理解的是,图1示出的结构并不构成对搜索服务的创建装置1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
在图2所示的装置1实施例中,存储器11中存储有搜索服务的创建程序01;处理器12执行存储器11中存储的搜索服务的创建程序01时实现如下步骤:
获取用户上传的数据库格式的建表语句,根据所述建表语句生成待创建的搜索引擎的Schema文件。
为搜索引擎分配空闲的实时分布式搜索和分析引擎ElasticSearch集群。
根据所述Schema文件创建索引库。
根据Schema文件生成搜索引擎的索引操作接口,所述索引操作接口包括索引创建接口、索引删除接口和搜索接口。
将创建的索引库和所述索引操作接口发布到maven仓库,并以接口服务的形式暴露搜索引擎的索引和搜索功能。
本发明实施例中,统一建库语句,将创建索引库的语句抽象成符合数据库DDL(schema data definition language,模式数据定义语言)规范格式的建表语句。这种建表语句符合SQL(Structured Query Language,结构化查询语言)规范,能够屏蔽用户感知底层搜索引擎,统一不同底层搜索引擎的建库语句,支持对不同业务数据快速建立通用的搜索服务。
例如,现在要创建一个针对医疗数据系统的搜索服务,该搜索服务可以提供医疗数据系统中的多个业务系统数据的搜索。其建表语句举例如下:
具体地,获取用户上传的数据库格式的建表语句,根据所述建表语句生成待创建的搜索引擎的Schema文件的步骤包括:
获取用户上传的数据库格式的建表语句;
确定待创建的搜索引擎对应的ElasticSearch字段类型;
解析所述建表语句的结构,识别出所述建表语句中包含的库名、字段名和字段属性列表;
根据预先设置的字段类型与ElasticSearch字段类型之间的映射关系表,将识别出的字段名对应的转换为与ElasticSearch字段类型匹配的字段;
将转换后的字段与所述库名、所述字段属性列表组合成所述Schema文件。
用户只需要创建数据库格式的建表语句并上传即可。此外,用户在创建数据库格式的建表语句的同时,选择的底层搜索引擎。
当搜索服务的创建装置接收到用户上传的建表语句时,获取用户选择的底层搜索引擎,根据底层搜索引擎确定要生成的建库语句的字段类型,例如,对于full_text类型,如果底层搜索引擎是ElasticSearch2.x,则映射到为String类型的字段,如果底层搜索引擎是ElasticSearch5.x,则映射为text类型的字段。当接收到用户上传的建表语句时,通过SQL(Structured Query Language,结构化查询语言)解析器,解析用户上传的DDL语句,识别出所述建表语句中包含的库名、字段名和字段属性列表;根据预先设置的字段类型和ES的字段类型映射关系表,逐个地将字段转换为与底层搜索引擎对应的建库语句,然后拼接库名、字段属性列表形成完整的语句,即为最终的schema文件。
底层搜索引擎提供了创建索引库的方式,不同的搜索引擎有不同的创建方式。本实施例中优选地采用ElasticSearch作为底层搜索引擎,在生成Schema文件后,分配空闲的ElasticSearch集群,其中,ElasticSearch是一个基于Lucene的搜索服务器,是实时分布式搜索和分析引擎,它提供了一个分布式多用户能力的全文搜索引擎,基于restful接口,restful接口是一种基于REST(Representational State Transfer,表述性状态转移,简称REST)架构风格的接口。因此,ElasticSearch提供了Restful的接口来创建索引库,创建装置访问其对应的Restful接口时传入生成的schema文件,就能完成索引库的创建。
具体地,解析生成的Schema文件,获取所述Schema文件中的所有字段,根据获取的字段生成model类,生成的model类为Java格式的POJO类(Plain Ordinary Java Object,简单的Java对象);其中,多值字段用数组或者集合类型表示。根据所述model类生成索引创建接口以及与所述索引创建接口对应的创建响应类,索引创建接口包含模型数据、接口名称、版本信息、动作发生时间信息;创建响应类包含创建索引响应成功信息和响应失败信息。根据所述model类生成以及与所述索引删除接口对应的删除响应类;确定所述Schema文件中的所有字段中被定义成可用于搜索的字段列表,并根据所述可用于搜索的字段列表和所述model类生成搜索接口和与所述搜索接口对应的搜索响应类。索引创建接口支持对索引数据的创建与修改,搜索接口提供搜索服务,索引删除接口支持对索引数据的删除。用户可以通过索引创建接口和索引删除接口对索引数据进行增删改操作。
在索引库和索引操作接口创建完成之后,将对应的代码发布到maven仓库,并接收用户通过引入操作上传的jar包依赖,将索引和搜索功能以接口服务的形式自动暴露出来,完成搜索服务的构建。maven是Apache开源社区推出的一款基于项目对象模型的,可通过描述信息来管理项目的构建、报告和文档的软件项目管理工具,它是目前使用非常广泛且拥有较多插件的软件项目管理工具。maven的使用依赖于maven仓库,在项目中使用maven管理jar包有两种情况较常见:一是从maven库中下载java项目所依赖的jar包;二是将本身的项目生成jar包上传至maven仓库。在maven中,任何一个依赖、插件或者项目构建的输出,都可以称为构建,maven可以在某个位置统一存储所有的maven项目共享的构建,这个统一的位置就是仓库,项目构建完毕后生成的构建也可以安装或者部署到仓库中,供其它项目使用。
进一步地,在其他实施例中,本发明的装置还可以实现对索引操作接口限流和降级功能,具体地,预先为每一个接口预先设置流量阈值,当单位时间内的接口调用量超过预设的流量阈值,则返回错误,以实现限流。对于写接口操作,如索引创建接口,当检测到系统的写线程池消耗过度,将写索引操作转为异步操作,先将请求结果返回给用户,再异步执行写索引操作,以保证数据的最终一致性(在正常情况下,写操作会在将请求结果返回给用户之前完成,即实现同步操作);对于读接口操作,如搜索接口,当检测到系统压力大于预设阈值或者底层存储引擎不可用时,返回最近一次调用成功的缓存数据。
进一步地,在另一实施例中,本发明的装置还支持ElasticSearch集群的动态切换,用户可以根据需要调整索引库和ElasticSearch集群的对应关系。具体地,在管理页面提供编辑索引库的集群的控件,当检测到用户基于该控件触发的编辑指令时,展示集群编辑界面,以供用户基于集群编辑界面选择新的集群。当侦测到用户基于刷新控件触发的切换指令时,根据数据库中存储的建库语句,按照上述实施例中的方式在新的集群中重新建立索引库,并查询原始集群中的数据,将这些数据通过写索引接口写入到新的集群中,并且在新的集群建立完成后,将接收到的所有该索引库相关的请求都转发到新集群上操作,以实现集群的动态切换。
本实施例提出的搜索服务的创建装置,获取用户上传的数据库格式的建表语句,根据建表语句生成待创建的搜索引擎的Schema文件;根据Schema文件创建索引库;为搜索引擎分配空闲的实时分布式搜索和分析引擎ElasticSearch集群;根据Schema文件生成搜索引擎的索引操作接口,索引操作接口包括索引创建接口、索引删除接口和搜索接口;将创建的索引库和索引操作接口发布到maven仓库,并以接口服务的形式暴露搜索引擎的索引和搜索功能。通过上述过程,无需用户编写完整的服务代码,当需要创建新的搜索服务时,用户创建数据库格式的建表语句并上传,根据对建表语句的解析,生成待创建的搜索引擎的Schema文件,进而创建索引库和搜索引擎的索引和搜索功能的接口,实现搜索引擎的创建,提高搜索服务的创建效率。
可选地,在其他的实施例中,搜索服务的创建程序还可以被分割为一个或者多个模块,一个或者多个模块被存储于存储器11中,并由一个或多个处理器(本实施例为处理器12)所执行以完成本发明,本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段,用于描述搜索服务的创建程序在搜索服务的创建装置中的执行过程。
例如,参照图3所示,为本发明搜索服务的创建装置一实施例中的搜索服务的创建程序的程序模块示意图,该实施例中,搜索服务的创建程序可以被分割为文件生成模块10、集群分配模块20、索引库创建模块30、接口创建模块40和数据发布模块50,示例性地:
文件生成模块10用于:获取用户上传的数据库格式的建表语句,根据所述建表语句生成待创建的搜索引擎的Schema文件;
集群分配模块20用于:为搜索引擎分配空闲的实时分布式搜索和分析引擎ElasticSearch集群;
索引库创建模块30用于:根据所述Schema文件创建索引库;
接口创建模块40用于:根据Schema文件生成搜索引擎的索引操作接口,所述索引操作接口包括索引创建接口、索引删除接口和搜索接口;
数据发布模块50用于:将创建的索引库和所述索引操作接口发布到maven仓库,并以接口服务的形式暴露搜索引擎的索引和搜索功能。
上述文件生成模块10、集群分配模块20、索引库创建模块30、接口创建模块40和数据发布模块50等程序模块被执行时所实现的功能或操作步骤与上述实施例大体相同,在此不再赘述。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有搜索服务的创建程序,所述搜索服务的创建程序可被一个或多个处理器执行,以实现如下操作:
获取用户上传的数据库格式的建表语句,根据所述建表语句生成待创建的搜索引擎的Schema文件;
为搜索引擎分配空闲的实时分布式搜索和分析引擎ElasticSearch集群;
根据所述Schema文件创建索引库;
根据Schema文件生成搜索引擎的索引操作接口,所述索引操作接口包括索引创建接口、索引删除接口和搜索接口;
将创建的索引库和所述索引操作接口发布到maven仓库,并以接口服务的形式暴露搜索引擎的索引和搜索功能。本发明计算机可读存储介质具体实施方式与上述搜索服务的创建装置和方法各实施例基本相同,在此不作累述。
需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种搜索服务的创建方法,其特征在于,所述搜索服务的创建方法包括:
获取用户上传的数据库格式的建表语句,根据所述建表语句生成待创建的搜索引擎的Schema文件;
为搜索引擎分配空闲的实时分布式搜索和分析引擎ElasticSearch集群;
根据所述Schema文件创建索引库;
根据Schema文件生成搜索引擎的索引操作接口,所述索引操作接口包括索引创建接口、索引删除接口和搜索接口;
将创建的索引库和所述索引操作接口发布到maven仓库,并以接口服务的形式暴露搜索引擎的索引和搜索功能。
2.如权利要求1所述的搜索服务的创建方法,其特征在于,所述获取用户上传的数据库格式的建表语句,根据所述建表语句生成待创建的搜索引擎的Schema文件的步骤包括:
获取用户上传的数据库格式的建表语句;
确定待创建的搜索引擎对应的ElasticSearch字段类型;
解析所述建表语句的结构,识别出所述建表语句中包含的库名、字段名和字段属性列表;
根据预先设置的字段类型与ElasticSearch字段类型之间的映射关系表,将识别出的字段名对应的转换为与ElasticSearch字段类型匹配的字段;
将转换后的字段与所述库名、所述字段属性列表组合成所述Schema文件。
3.如权利要求1所述的搜索服务的创建方法,其特征在于,所述根据Schema文件生成搜索引擎的索引操作接口,所述索引操作接口包括索引创建接口、索引删除接口和搜索接口的步骤包括:
解析生成的Schema文件,获取所述Schema文件中的所有字段,根据获取的字段生成model类;
根据所述model类生成索引创建接口、索引删除接口以及与所述索引创建接口对应的创建响应类、与所述删除接口对应的删除响应类;
确定所述Schema文件中的所有字段中被定义成可用于搜索的字段列表,并根据所述可用于搜索的字段列表和所述model类生成搜索接口和与所述搜索接口对应的搜索响应类。
4.如权利要求1所述的搜索服务的创建方法,其特征在于,所述将创建的索引库和所述索引操作接口发布到maven仓库,并以接口服务的形式暴露搜索引擎的索引和搜索功能的步骤之后,所述方法还包括步骤:
对数据库的日志数据进行监控,判断所述数据库中是否有数据更新操作;
若检测到所述数据库中有数据更新操作,则获取所述数据库中的更新数据,并通过所述索引创建接口将所述更新数据更新到索引库。
5.如权利要求1至4中任一项所述的搜索服务的创建方法,其特征在于,所述方法还包括步骤:
对所述索引操作接口在单位时间内的调用量进行实时监测;
若检测到有索引操作接口在单位时间内的调用量大于与该索引操作接口对应的预设流量阈值,则对超出所述预设流量阈值的调用请求返回错误提示信息。
6.一种搜索服务的创建装置,其特征在于,所述装置包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的搜索服务的创建程序,所述搜索服务的创建程序被所述处理器执行时实现如下步骤:
获取用户上传的数据库格式的建表语句,根据所述建表语句生成待创建的搜索引擎的Schema文件;
为搜索引擎分配空闲的实时分布式搜索和分析引擎ElasticSearch集群;
根据所述Schema文件创建索引库;
根据Schema文件生成搜索引擎的索引操作接口,所述索引操作接口包括索引创建接口、索引删除接口和搜索接口;
将创建的索引库和所述索引操作接口发布到maven仓库,并以接口服务的形式暴露搜索引擎的索引和搜索功能。
7.如权利要求6所述的搜索服务的创建装置,其特征在于,所述获取用户上传的数据库格式的建表语句,根据所述建表语句生成待创建的搜索引擎的Schema文件的步骤包括:
获取用户上传的数据库格式的建表语句;
确定待创建的搜索引擎对应的ElasticSearch字段类型;
解析所述建表语句的结构,识别出所述建表语句中包含的库名、字段名和字段属性列表;
根据预先设置的字段类型与ElasticSearch字段类型之间的映射关系表,将识别出的字段名对应的转换为与ElasticSearch字段类型匹配的字段;
将转换后的字段与所述库名、所述字段属性列表组合成所述Schema文件。
8.如权利要求6所述的搜索服务的创建装置,其特征在于,所述根据Schema文件生成搜索引擎的索引操作接口,所述索引操作接口包括索引创建接口、索引删除接口和搜索接口的步骤包括:
解析生成的Schema文件,获取所述Schema文件中的所有字段,根据获取的字段生成model类;
根据所述model类生成索引创建接口、索引删除接口以及与所述索引创建接口对应的创建响应类、与所述删除接口对应的删除响应类;
确定所述Schema文件中的所有字段中被定义成可用于搜索的字段列表,并根据所述可用于搜索的字段列表和所述model类生成搜索接口和与所述搜索接口对应的搜索响应类。
9.如权利要求6至8中任一项所述的搜索服务的创建装置,其特征在于,所述搜索服务的创建程序还可被所述处理器执行,以在所述将创建的索引库和所述索引操作接口发布到maven仓库,并以接口服务的形式暴露搜索引擎的索引和搜索功能的步骤之后,还实现步骤:
对数据库的日志数据进行监控,判断所述数据库中是否有数据更新操作;
若检测到所述数据库中有数据更新操作,则获取所述数据库中的更新数据,并通过所述索引创建接口将所述更新数据更新到索引库。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有搜索服务的创建程序,所述搜索服务的创建程序可被一个或者多个处理器执行,以实现如权利要求1至5中任一项所述的搜索服务的创建方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810547316.0A CN108874924B (zh) | 2018-05-31 | 2018-05-31 | 搜索服务的创建方法、装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810547316.0A CN108874924B (zh) | 2018-05-31 | 2018-05-31 | 搜索服务的创建方法、装置及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108874924A true CN108874924A (zh) | 2018-11-23 |
CN108874924B CN108874924B (zh) | 2022-11-04 |
Family
ID=64336081
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810547316.0A Active CN108874924B (zh) | 2018-05-31 | 2018-05-31 | 搜索服务的创建方法、装置及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108874924B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110175022A (zh) * | 2019-04-25 | 2019-08-27 | 平安科技(深圳)有限公司 | 自动生成pojo类的方法、装置及存储介质、计算机设备 |
CN110489417A (zh) * | 2019-07-25 | 2019-11-22 | 深圳壹账通智能科技有限公司 | 一种数据处理方法及相关设备 |
CN110555150A (zh) * | 2019-09-09 | 2019-12-10 | 江苏满运软件科技有限公司 | 一种数据监控方法、装置、设备和存储介质 |
CN110851511A (zh) * | 2019-10-09 | 2020-02-28 | 上海易点时空网络有限公司 | 数据同步的方法及装置 |
CN111125176A (zh) * | 2019-12-20 | 2020-05-08 | 北京百度网讯科技有限公司 | 一种业务数据搜索方法、装置、电子设备和存储介质 |
CN111143460A (zh) * | 2019-12-30 | 2020-05-12 | 智慧神州(北京)科技有限公司 | 基于大数据的经济领域的数据的检索方法、装置与处理器 |
CN111522810A (zh) * | 2020-03-12 | 2020-08-11 | 视联动力信息技术股份有限公司 | 一种索引获取方法和装置 |
CN111538884A (zh) * | 2020-04-20 | 2020-08-14 | 上海鸿翼软件技术股份有限公司 | 一种数据搜索方法、装置、设备及计算机可读存储介质 |
CN113378022A (zh) * | 2020-03-10 | 2021-09-10 | 北京搜狗科技发展有限公司 | 一种站内搜索平台、搜索方法和相关装置 |
CN113590884A (zh) * | 2020-04-30 | 2021-11-02 | 华为技术有限公司 | 一种分布式数据搜索方法和索引文件的共享方法 |
CN113672627A (zh) * | 2021-09-08 | 2021-11-19 | 湖南惠农科技有限公司 | Elasticsearch搜索引擎索引构建方法及装置 |
CN113806611A (zh) * | 2020-06-17 | 2021-12-17 | 海信集团有限公司 | 一种存储搜索引擎结果的方法及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106202564A (zh) * | 2016-08-02 | 2016-12-07 | 浪潮软件股份有限公司 | 一种基于ElasticSearch的本体关系数据搜索框架 |
CN106649455A (zh) * | 2016-09-24 | 2017-05-10 | 孙燕群 | 一种大数据开发的标准化系统归类、命令集系统 |
CN106934062A (zh) * | 2017-03-28 | 2017-07-07 | 广东工业大学 | 一种查询elasticsearch的实现方法及系统 |
GB201716171D0 (en) * | 2017-10-04 | 2017-11-15 | Palantir Technologies Inc | Data indexing for search tool |
-
2018
- 2018-05-31 CN CN201810547316.0A patent/CN108874924B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106202564A (zh) * | 2016-08-02 | 2016-12-07 | 浪潮软件股份有限公司 | 一种基于ElasticSearch的本体关系数据搜索框架 |
CN106649455A (zh) * | 2016-09-24 | 2017-05-10 | 孙燕群 | 一种大数据开发的标准化系统归类、命令集系统 |
CN106934062A (zh) * | 2017-03-28 | 2017-07-07 | 广东工业大学 | 一种查询elasticsearch的实现方法及系统 |
GB201716171D0 (en) * | 2017-10-04 | 2017-11-15 | Palantir Technologies Inc | Data indexing for search tool |
Non-Patent Citations (1)
Title |
---|
章超: "千亿级智能交通大数据存储与检索系统的研究", 《中国优秀硕士学位论文全文数据库 (工程科技Ⅱ辑)》 * |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110175022A (zh) * | 2019-04-25 | 2019-08-27 | 平安科技(深圳)有限公司 | 自动生成pojo类的方法、装置及存储介质、计算机设备 |
CN110175022B (zh) * | 2019-04-25 | 2023-10-13 | 平安科技(深圳)有限公司 | 自动生成pojo类的方法、装置及存储介质、计算机设备 |
CN110489417A (zh) * | 2019-07-25 | 2019-11-22 | 深圳壹账通智能科技有限公司 | 一种数据处理方法及相关设备 |
CN110489417B (zh) * | 2019-07-25 | 2023-03-28 | 深圳壹账通智能科技有限公司 | 一种数据处理方法及相关设备 |
CN110555150B (zh) * | 2019-09-09 | 2022-10-14 | 江苏满运软件科技有限公司 | 一种数据监控方法、装置、设备和存储介质 |
CN110555150A (zh) * | 2019-09-09 | 2019-12-10 | 江苏满运软件科技有限公司 | 一种数据监控方法、装置、设备和存储介质 |
CN110851511A (zh) * | 2019-10-09 | 2020-02-28 | 上海易点时空网络有限公司 | 数据同步的方法及装置 |
CN111125176A (zh) * | 2019-12-20 | 2020-05-08 | 北京百度网讯科技有限公司 | 一种业务数据搜索方法、装置、电子设备和存储介质 |
CN111125176B (zh) * | 2019-12-20 | 2023-10-03 | 北京百度网讯科技有限公司 | 一种业务数据搜索方法、装置、电子设备和存储介质 |
CN111143460A (zh) * | 2019-12-30 | 2020-05-12 | 智慧神州(北京)科技有限公司 | 基于大数据的经济领域的数据的检索方法、装置与处理器 |
CN113378022A (zh) * | 2020-03-10 | 2021-09-10 | 北京搜狗科技发展有限公司 | 一种站内搜索平台、搜索方法和相关装置 |
CN111522810A (zh) * | 2020-03-12 | 2020-08-11 | 视联动力信息技术股份有限公司 | 一种索引获取方法和装置 |
CN111538884A (zh) * | 2020-04-20 | 2020-08-14 | 上海鸿翼软件技术股份有限公司 | 一种数据搜索方法、装置、设备及计算机可读存储介质 |
CN113590884A (zh) * | 2020-04-30 | 2021-11-02 | 华为技术有限公司 | 一种分布式数据搜索方法和索引文件的共享方法 |
CN113806611A (zh) * | 2020-06-17 | 2021-12-17 | 海信集团有限公司 | 一种存储搜索引擎结果的方法及设备 |
CN113672627A (zh) * | 2021-09-08 | 2021-11-19 | 湖南惠农科技有限公司 | Elasticsearch搜索引擎索引构建方法及装置 |
CN113672627B (zh) * | 2021-09-08 | 2023-08-18 | 湖南惠农科技有限公司 | Elasticsearch搜索引擎索引构建方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108874924B (zh) | 2022-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108874924A (zh) | 搜索服务的创建方法、装置及计算机可读存储介质 | |
US8555018B1 (en) | Techniques for storing data | |
US9146994B2 (en) | Pivot facets for text mining and search | |
CN109933571B (zh) | 数据库设计文档生成方法、装置及计算机可读存储介质 | |
WO2019085474A1 (zh) | 计算引擎实现方法、电子装置及存储介质 | |
US20210132970A1 (en) | System and method for implementing a generic parser module | |
CN102708203A (zh) | 一种基于xml元数据的数据库动态管理方法 | |
CN107656729A (zh) | 列表视图的更新装置、方法及计算机可读存储介质 | |
CN113010476B (zh) | 元数据查找方法、装置、设备及计算机可读存储介质 | |
CN111966692A (zh) | 针对数据仓库的数据处理方法、介质、装置和计算设备 | |
US11573961B2 (en) | Delta graph traversing system | |
CN110737506A (zh) | 一种虚拟机镜像版本管理的方法 | |
CN103123651B (zh) | 一种查看多个同类文件的方法、装置和移动设备 | |
Zhuang et al. | D-Ocean: an unstructured data management system for data ocean environment | |
CN103501341A (zh) | 一种Web服务的创建方法及装置 | |
CN113656723A (zh) | 网页视图的展示方法、装置 | |
CN104133678A (zh) | 构建、运行交互地震解释系统的方法及装置 | |
CN115062084B (zh) | 基于数据库元数据构建api接口方法及装置 | |
CN116594628A (zh) | 数据溯源方法、装置和计算机设备 | |
CN109753533A (zh) | 一种多源关系型数据库客户端开发方法及装置 | |
CN107679168B (zh) | 一种基于java平台的目标网站内容获取方法 | |
CN109992573B (zh) | 一种实现hdfs文件占用率自动监控的方法及系统 | |
CN113868138A (zh) | 测试数据的获取方法、系统、设备及存储介质 | |
Zamula et al. | MneMojno—Design and deployment of a Semantic web service and a mobile application | |
CN113760600A (zh) | 一种数据库备份方法、数据库还原方法和相关装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |