CN111324803A - 搜索引擎的查询请求处理方法、装置及客户端 - Google Patents
搜索引擎的查询请求处理方法、装置及客户端 Download PDFInfo
- Publication number
- CN111324803A CN111324803A CN202010085992.8A CN202010085992A CN111324803A CN 111324803 A CN111324803 A CN 111324803A CN 202010085992 A CN202010085992 A CN 202010085992A CN 111324803 A CN111324803 A CN 111324803A
- Authority
- CN
- China
- Prior art keywords
- sql
- query request
- query
- request
- annotation
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 18
- 238000000034 method Methods 0.000 claims abstract description 197
- 238000012545 processing Methods 0.000 claims abstract description 43
- 230000015654 memory Effects 0.000 claims description 35
- 238000006243 chemical reaction Methods 0.000 claims description 11
- 238000004458 analytical method Methods 0.000 claims description 10
- 230000008569 process Effects 0.000 abstract description 26
- 230000006870 function Effects 0.000 description 38
- 238000010586 diagram Methods 0.000 description 20
- 238000011161 development Methods 0.000 description 15
- 230000006872 improvement Effects 0.000 description 9
- 238000004590 computer program Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 8
- 239000003795 chemical substances by application Substances 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000012423 maintenance Methods 0.000 description 5
- 235000010627 Phaseolus vulgaris Nutrition 0.000 description 3
- 244000046052 Phaseolus vulgaris Species 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000000750 progressive effect Effects 0.000 description 3
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000004069 differentiation Effects 0.000 description 2
- 229910021389 graphene Inorganic materials 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 108010001267 Protein Subunits Proteins 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000007795 chemical reaction product Substances 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 229920001296 polysiloxane Polymers 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9532—Query formulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书提供一种搜索引擎的查询请求处理方法、装置及客户端,所述方法包括:通过在客户端中提交SQL查询请求,并由客户端进行SQL解析,将SQL查询请求转换成搜索引擎能够识别的DSL查询请求,发送给搜索引擎服务端,由服务端执行该查询请求,获得该查询请求对应的查询结果。实现了将SQL功能迁移至客户端中,以在搜索引擎的客户端提供SQL的能力请求搜索引擎,整个过程可以不需要安装SQL插件。
Description
技术领域
本说明书属于计算机技术领域,尤其涉及一种搜索引擎的查询请求处理方法、装置及客户端搜索引擎。
背景技术
随着计算机技术的发展,一些搜索引擎大大方便了人们的工作和生活,用户可以利用搜索引擎查询信息。搜素引擎的使用和开发通常需要SQL(Structured QueryLanguage,结构化查询语言)查询功能,一般会在搜索引擎中使用SQL插件,才能实现SQL查询的功能。如:在搜索引擎Elasticsearch(一种开源的搜索引擎,简称ES)中,SQL插件一般设置在搜索引擎ES的服务端或中间件中,利用SQL插件可以对搜索引擎进行数据查询或开发。
发明内容
本说明书实施例的目的在于提供一种搜索引擎的查询请求处理方法、装置及搜索引擎,解决了搜索引擎客户端和服务端的版本差异问题。
一方面本说明书实施例提供了一种搜索引擎的查询请求处理方法,包括:
接收SQL查询请求;
在本地客户端对所述SQL查询请求进行解析,将所述SQL查询请求转换成DSL查询请求;
将所述DSL查询请求发送至搜索引擎的服务端,以使得所述服务端根据所述DSL查询请求获得查询结果;
接收所述服务端返回的查询结果。
另一方面,本说明书提供了一种搜索引擎的查询请求处理装置,包括:
查询请求接收模块,用于接收SQL查询请求;
查询请求解析模块,用于在本地客户端对所述SQL查询请求进行解析,将所述SQL查询请求转换成DSL查询请求;
查询请求发送模块,用于将所述DSL查询请求发送至搜索引擎的服务端,以使得所述服务端根据所述DSL查询请求获得查询结果;
查询结果接收模块,用于接收所述服务端返回的查询结果。
又一方面,本说明书实施例提供一种数据对象调用客户端,包括:
SQL解析器、DSL执行器,其中,
所述SQL解析器用于对客户端接收到的SQL查询请求进行解析,将所述SQL查询请求转换成DSL查询请求;
所述DSL执行器用于将所述SQL解析器获得的所述DSL查询请求以rest的方式发送至搜索引擎的服务端,以使得所述服务端根据所述DSL查询请求获得查询结果。
再一方面,本说明书实施例提供一种搜索引擎,包括:客户端、服务端,其中:
所述客户端用于在接收到SQL查询请求后,对所述SQL查询请求进行解析,将所述SQL查询请求转换成DSL查询请求,并将所述DSL查询请求发送给所述服务端;其中,SQL查询请求包括调用标记有SQL注解的目标方法的调用请求,或调用带有SQL查询语言的目标方法的调用请求,所述SQL注解用于表征被注解的目标方法在本地客户端调用时执行的步骤以及对返回结果的执行步骤;
在所述查询请求为调用标记有SQL注解的目标方法的调用请求时,所述客户端还用于执行上述基于SQL注解进行查询请求处理的方法;
所述服务端用于接收所述客户端发送的DSL查询请求,根据所述DSL查询请求执行对应的步骤,获得所述SQL查询请求对应的查询结果,并将所述查询结果返回给所述客户端。
还一方面,本说明书提供了一种搜索引擎的查询请求处理设备,包括:至少一个处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现上述搜索引擎的查询请求处理方法。
本说明书提供的搜索引擎的查询请求处理方法、装置、客户端、处理设备,通过在客户端中提交SQL查询请求,并由客户端进行SQL解析,将SQL查询请求转换成搜索引擎能够识别的DSL查询请求,发送给搜索引擎服务端,由服务端执行该查询请求,获得该查询请求对应的查询结果。实现了将SQL的功能迁移至客户端中,在搜索引擎的客户端提供SQL的能力请求搜索引擎,整个过程可以不需要安装SQL插件,实现了即使搜索引擎的服务端和客户端版本不匹配或服务端(或中间件)没有安装SQL插件,开发人员也能够使用SQL的功能,解决了搜索引擎的服务端和客户端版本差异化的问题。同时,服务端和客户端的版本可以不需要绑定,即可以不同步升级,降低了软件开发和维护的成本。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本说明书一个实施例中搜索引擎的查询请求处理方法的流程示意图;
图2是本说明书一个实施例中搜索引擎的查询请求处理客户端的结构示意图;
图3是本说明书又一个实施例中搜索引擎的查询请求处理客户端的结构示意图;
图4是本说明书又一个实施例中搜索引擎的查询请求处理方法的原理流程示意图;
图5是本说明书又一个实施例中搜索引擎的查询请求处理方法的原理流程示意图;
图6是本说明书提供的搜索引擎的查询请求处理装置一个实施例的模块结构示意图;
图7是本说明书一个实施例中搜索引擎的查询请求处理计算机终端的硬件结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
随着计算机和互联网技术的发展,越来越多的用户利用计算机和互联网技术进行信息检索查询,进行信息检索查询时,通常需要使用搜索引擎,如:搜索引擎ES以及搜索引擎Zsearch。搜索引擎的开发以及使用时通常需要SQL查询语言,如:搜索引擎ES一般需要安装ES-SQL插件或者Xpack-SQL插件,安装了SQL插件后,搜索引擎才能支持SQL功能。例如:在一些场景示例中,用户可以在搜索引擎的客户端发送SQL查询请求,客户端将SQL查询请求发送至搜索引擎的服务端,服务端利用安装的SQL插件对接收到的SQL查询请求进行解析,并执行对应的步骤,获得查询结果返回给客户端。
本说明书实施例提供一种搜索引擎的查询请求处理方法,可以应用在搜索引擎ES以及搜索引擎Zsearch的客户端中,在搜索引擎客户端接收到SQL查询请求后,可以在客户端中进行SQL的解析,将解析后的SQL发送至服务端,由服务端执行对应的步骤,获得查询请求对应的查询结果。整个过程可以不需要安装SQL插件,在客户端层面提供了SQL的能力,避免了因服务端或中间件没有安装SQL插件导致不能使用SQL功能,或因客户端与服务端版本不一致,SQL功能不能使用或异常的问题。
本说明书中搜索引擎的查询请求处理方法可以应用在客户端或服务器中,客户端可以是智能手机、平板电脑、智能可穿戴设备(智能手表、虚拟现实眼镜、虚拟现实头盔等)、智能车载设备等电子设备。
图1是本说明书一个实施例中搜索引擎的查询请求处理方法的流程示意图,如图1所示,本说明书一个实施例中提供的搜索引擎的查询请求处理方法可以包括:
步骤102、接收SQL查询请求。
在具体的实施过程中,本说明书实施例中提供的方法,可以应用在搜索引擎的客户端,搜索引擎可以为不支持SQL语言的搜索引擎,如:ES或Zsearch。用户可以通过搜索引擎的客户端发送SQL查询请求,SQL查询请求可以理解为基于SQL语言的查询请求,SQL查询请求中可以包括调用的方法或函数,如:接收用户输入的调用基于SQL语言编写的方法的请求等。
本说明书一些实施例中,接收的SQL查询请求可以包括:请求调用标记有SQL注解的目标方法的调用请求或请求调用带有SQL查询语言的目标方法的调用请求。
在具体的实施过程中,搜索引擎的开发人员可以预先写好SQL注解,将该SQL注解标记为Spring bean,可以在搜索引擎的客户端中需要使用SQL功能的方法或函数中添加写好的SQL注解。SQL注解可以理解为一种Java注解(Annotation),是Java代码里的特殊标记,为代码中添加用Java代码的额外信息提供了一种形式化的方法。SQL注解可以使用SQL语言编写的Java注解,本说明书实施例中的SQL注解可以添加在指定的方法或函数中。
本说明书一些实施例中,SQL注解可以用于表征被注解的目标方法在本地客户端调用时需要执行的步骤以及对返回结果的执行步骤,即SQL注解可以定义了目标方法的调用执行动作。SQL注解可以实现SQL插件的部分功能,用户可以在搜索引擎的客户端中请求调用带有SQL标记的目标方法,可以利用目标方法中的SQL注解向搜索引擎的服务端发起对应的SQL查询请求。
在一些实施例中,标记有SQL注解的方法的表示方法为:
@SqlUpdate(sql=”update func_result.info set……”)
Public UpdateRespone updateFuncResult(……)
}
在一些实施例中,搜索引擎的开发人员也可以预先写好SQL,即可以预先在搜索引擎的客户端中需要使用SQL功能的方法或函数中添加SQL查询语言,当带有SQL查询语言的函数在客户端本地调用时,可以认为客户端接收到SQL查询请求。或者用户可以直接在客户端中编写带有SQL查询语言的方法或函数,并向客户端提交SQL查询请求。例如:带有SQL查询语言的目标方法可以表示为:
public void updateBYSql(){
String sql=”update func_result.info set……”;
UpdateRespone respone=esRestClient.updateBYSql(sql);
}
客户端在接收到调用某一个方法或数据对象的请求时,可以先判断调用的方法中是否有SQL注解,若有,则触发该SQL注解,执行本说明书实施例中基于SQL注解的查询请求处理过程。或者判断调用的方法中是否带有SQL查询语言,若有,则执行本说明书实施例中的查询请求处理过程,直接由客户端进行SQL解析。
步骤104、在本地客户端对所述SQL查询请求进行解析,将所述SQL查询请求转换成DSL查询请求。
在具体的实施过程中,ES搜索引擎或Zsearch搜索引擎的服务端一般支持DSL(Domain Specific Language,领域特定语言)语言,但ES或Zsearch搜索引擎的服务端本身一般不支持SQL语言。可以将SQL语言转换为DSL语言,即将SQL查询请求转换为DSL查询请求,这样可以避免若搜索引擎的服务端没有安装SQL插件或者服务端与客户端的版本不匹配,导致服务端不支持SQL语言或无法准确识别SQL语言,使得无法准确执行查询请求中目标方法的问题。通过对SQL查询请求进行转换,使得将SQL解析从SQL插件转移至搜索引擎的客户端,使的无论在有无SQL插件/中间件的搜索引擎如ES环境下都可以使用SQL进行开发或使用。
其中,SQL转换为DSL的方法可以基于SQL解析器实现,或将SQL插件中的转换功能转移至搜索引擎的客户端,或者预先编写能够进行SQL和DSL转换的代码封装存储在客户端中,以使得搜索引擎的客户端支持SQL的解析,实现将SQL转换为DSL,以向服务端提交查询请求。当然,也可以采用其他的方法进行SQL的转换,本说明书实施例不作具体限定。
步骤106、将所述DSL查询请求发送至搜索引擎的服务端,以使得所述服务端根据所述DSL查询请求获得查询结果。
在具体的实施过程中,搜索引擎的客户端将SQL查询请求转换为DSL查询请求后,客户端可以将转换获得的DSL查询请求发送至搜索引擎的服务端,以使服务端接收到该DSL查询请求后,执行查询请求中的方法,获得对应的查询结果。
本说明书一些实施例中,将SQL查询请求转换为DSL查询请求后,可以以rest的方式向搜索引擎的服务端发送所述DSL查询请求。其中,rest方式可以理解为一种搜索引擎的请求方式,可以理解为一种http访问,能够对搜索引擎进行索引和数据操作。rest请求方法可以包括get、post、put、delete,分别对应获取资源、添加资源、更新资源及删除资源,具体采用哪一种方法,本说明书实施例不作具体限定。采用rest的方式与服务端进行请求,可以兼容所有ES/Zsearch等搜索引擎版本,可以解决搜索引擎如ES等大多数客户端版本与服务端绑定问题。
步骤108、接收所述服务端返回的查询结果。
在具体的实施过程中,搜索引擎的服务端执行查询请求中的方法后,可以将获得的查询结果返回给客户端,客户端接收该查询结果,完成SQL查询,并且可以将获得的查询结果展示给用户。
本说明书实施例提供的搜索引擎的查询请求处理方法,通过在客户端中提交SQL查询请求,并由客户端进行SQL解析,将SQL查询请求转换成搜索引擎能够识别的DSL查询请求,发送给搜索引擎服务端,由服务端执行该查询请求,获得该查询请求对应的查询结果。实现了将SQL的功能迁移至客户端中,在搜索引擎的客户端提供SQL的能力请求搜索引擎,整个过程可以不需要安装SQL插件,实现了即使搜索引擎的服务端和客户端版本不匹配或服务端(或中间件)没有安装SQL插件,开发人员也能够使用SQL的功能,解决了搜索引擎的服务端和客户端版本差异化的问题。同时,服务端和客户端的版本可以不需要绑定,即可以不同步升级,降低了软件开发和维护的成本。
在上述实施例的基础上,本说明书一些实施例中,当客户端接收到的查询请求是调用标记有SQL注解的目标方法的调用请求时,所述方法还可以包括:
拦截所述标记有SQL注解的目标方法;
对拦截后的目标方法进行参数填入,获得填入参数后的目标方法;
根据填入参数后的目标方法,获得所述SQL查询请求。
在具体的实施过程中,用户可以预先编写SQL注解,将SQL注解标记在执行的方法中,客户端接收到调用带有SQL注解的目标方法的调用请求后,可以触发该SQL注解,基于动态代理的SQL注解自动拦截该带有SQL注解的目标方法,并获取目标方法中所需的参数,填入目标方法的参数。填入参数后,可以将填入参数后的调用带有SQL注解的目标方法作为SQL查询请求,请求执行目标方法获得SQL查询结果。客户端接收到标记有SQL注解的SQL查询请求后,可以对接收到的SQL查询请求进行解析,如利用客户端中的SQL解析器将SQL查询请求转换为DSL查询请求,并向服务端提交查询请求。
本说明书实施例提供的搜索引擎的查询请求处理方法,通过在客户端中编写SQL注解,基于动态代理的SQL注解,在调用标记有SQL注解的目标方法时,拦截该目标方法,对该目标方法进行参数的填充后,发送给搜索引擎的服务端,由服务端执行该目标方法,获得该目标方法的调用执行结果即为SQL查询的查询结果。基于动态代理的SQL注解,实现了将SQL的功能迁移至客户端中,在搜索引擎的客户端提供SQL的能力请求搜索引擎,降低了软件开发和学习成本。整个过程可以不需要安装SQL插件,实现了即使搜索引擎的服务端和客户端版本不匹配或服务端(或中间件)没有安装SQL插件,开发人员也能够使用SQL的功能,解决了搜索引擎的服务端和客户端版本差异化的问题。同时,服务端和客户端的版本可以不需要绑定,即可以不同步升级,降低了软件开发和维护的成本。
在上述实施例的基础上,本说明书一些实施例中,所述SQL注解中可以定义对返回结果的执行步骤如:对返回的查询请求的查询结果采用类型适配器进行数据类型的转换,所述方法还可以包括:客户端在接收到服务端发送的SQL查询请求的查询结果后,可以根据目标方法中的SQL注解,自动获取目标方法对应的返回类型,并自动将接收到的查询结果自动转换为目标方法对应的返回类型。如:可以利用类型适配器将服务端返回的查询结果转换为目标方法所需要的返回类型,不需要大量繁琐的类型转换代码,提高了开发效率,降低了软件开发成本。其中,类型适配器可以表示在java程序语言中进行数据结构类型转换的对象,用户可以根据需要定义类型适配器的具体内容,本说明书实施例不作具体限定。可以预先在搜索引擎的客户端中编写类型适配器的代码封装成一个对象,或者将其他的类型适配器对象复制到搜索引擎的客户端中,当搜索引擎的服务端返回SQL查询请求对应的查询结果后,客户端可以将该查询结果发送给类型适配器,类型适配器自动将接收到的查询结果转换成目标方法所需要的返回类型,以使得返回的数据类型能够被客户端支持。
图2是本说明书一个实施例中搜索引擎的查询请求处理客户端的结构示意图,图3是本说明书又一个实施例中搜索引擎的查询请求处理客户端的结构示意图,图4是本说明书又一个实施例中搜索引擎的查询请求处理方法的原理流程示意图,如图2、图3、图4所示,本说明书一些实施例提供的搜索引擎中查询请求处理的方法可以应用在搜索引擎的客户端中,如可以应用在ES/Zsearch等搜索引擎的客户端中。如图2所示,本说明书一些实施例中搜索引擎的客户端可以包括SQL解析器、DSL执行器,所述SQL解析器用于对客户端接收到的SQL查询请求进行解析,将所述SQL查询请求转换成DSL查询请求。如图4所示,当SQL查询请求为上述实施例中带有SQL查询语言的目标方法的调用请求时,用户可以直接向客户端提交SQL查询请求,当客户端接收到调用某方法的调用请求时,可以先判断该方法中是否是带有SQL查询语言的目标方法的调用请求,若是,则直接将调用该方法的调用请求发送给SQL解析器,SQL解析器将该调用请求转换为服务端能够识别的DSL查询请求。所述DSL执行器用于将所述SQL解析器获得的所述DSL查询请求以rest的方式发送至搜索引擎的服务端,以使得所述服务端根据所述DSL查询请求获得查询结果。
图5是本说明书又一个实施例中搜索引擎的查询请求处理方法的原理流程示意图,如图3、图5所示,当SQL查询请求为带有SQL注解的目标方法的调用请求时,搜索引擎的客户端还可以包括注解代理执行器、参数注入器、类型适配器。下面结合图3、图5以应用在ES搜索引擎的客户端中为示例,具体介绍本说明书实施例中基于SQL注解,在搜索引擎的客户端中使用或开发搜索引擎进行SQL查询的过程:
利用本说明书实施例提供的方法,开发人员只需要写好SQL注解,即可直接获得返回结果。其中,SQL查询请求的提交以及获得返回结果的过程,对开发人员来说完全透明无感知。开发人员写好SQL注解后,可以把该注解标记为spring bean,当该bean被调用时,注解代理执行器会拦截被注解标记的方法,参数注入器注入方法参数,使SQL完整。注解代理执行器把填充参数后的SQL(即填充参数后的目标方法)提交给客户端。客户端可以通过SQL解析器把SQL转化为ES DSL即转换为DSL查询请求,SQL解析器可以将转换后获得的DSL查询请求发送给DSL执行器,DSL执行器可以通过rest方式把DSL查询请求提交给ES服务端。ES服务端执行DSL查询请求中的目标方法,获得对应的查询结果后,可以将查询结果返回给客户端的注解代理执行器。注解代理执行器再将查询结果提交给类型适配器,类型适配器处理返回结果时,可以自动识别被调用的目标方法的返回类型,把返回结果自动转化成任意匹配的类型(即转换为方法对应的返回类型)。
本说明书实施例,通过java动态代理拦截注解的方式,降低了开发人员的开发成本,基于客户端的SQL解析器,把SQL解析从ES插件端移到java客户端,使的无论在有无SQL插件/中间件的ES环境下都可以使用SQL进行开发。同时,利用DSL执行器通过纯rest的方式与服务端进行请求,兼容所有ES/Zsearch版本,解决ES大多数客户端版本与服务端绑定问题。利用类型适配器可以把返回数据适配成任意的返回类型,提高开发效率,使代码更加精简美观。此外,本说明书实施例可以使用开源软件Elasticsearch-SQL插件的服务端SQL解析部分,不涉及代码改动,也可以使用开源软件gson,仅使用了其解析json的能力,不涉及代码改动。即整个过程不涉及代码改动,开发成本和学习成本比较低,适用性比较广。
如图2-图5所示,本说明书实施例不仅提供了基于SQL注解进行SQL查询,也可以不使用SQL注解,把写好的SQL直接给客户端的SQL执行器进行执行,此时需要手动把类型转化成所需要的类型,可能开发效率会比较低。
本说明书中上述方法的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参考即可,每个实施例重点说明的都是与其他实施例的不同之处。相关之处参考方法实施例的部分说明即可。
基于上述所述的搜索引擎的查询请求处理方法,本说明书一个或多个实施例还提供一种搜索引擎的查询请求处理装置。所述的装置可以包括使用了本说明书实施例所述方法的系统(包括分布式系统)、软件(应用)、模块、组件、服务器、客户端等并结合必要的实施硬件的装置。基于同一创新构思,本说明书实施例提供的一个或多个实施例中的装置如下面的实施例所述。由于装置解决问题的实现方案与方法相似,因此本说明书实施例具体的装置的实施可以参考前述方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
具体地,图6是本说明书提供的搜索引擎的查询请求处理装置一个实施例的模块结构示意图,如图6所示,本说明书中提供的搜索引擎的查询请求处理装置可以包括:查询请求接收模块61、查询请求解析模块62、查询请求发送模块63、查询结果接收模块64,其中:
查询请求接收模块61,可以用于接收SQL查询请求;
查询请求解析模块62,可以用于对所述SQL查询请求进行解析,将所述SQL查询请求转换成DSL查询请求;
查询请求发送模块63,可以用于将所述DSL查询请求发送至搜索引擎的服务端,以使得所述服务端根据所述DSL查询请求获得查询结果;
查询结果接收模块64,可以用于接收所述服务端返回的查询结果。
本说明书实施例提供的搜索引擎的查询请求处理装置,通过在客户端中提交SQL查询请求,并由客户端进行SQL解析,将SQL查询请求转换成搜索引擎能够识别的DSL查询请求,发送给搜索引擎服务端,由服务端执行该查询请求,获得该查询请求对应的查询结果。实现了将SQL的功能迁移至客户端中,在搜索引擎的客户端提供SQL的能力请求搜索引擎,整个过程可以不需要安装SQL插件,实现了即使搜索引擎的服务端和客户端版本不匹配或服务端(或中间件)没有安装SQL插件,开发人员也能够使用SQL的功能,解决了搜索引擎的服务端和客户端版本差异化的问题。同时,服务端和客户端的版本可以不需要绑定,即可以不同步升级,降低了软件开发和维护的成本。
在上述实施例的基础上,本说明书一些实施例中,
所述查询请求接收模块具体用于:
接收调用标记有SQL注解的目标方法的调用请求,所述SQL注解用于表征被注解的目标方法在本地客户端调用时执行的步骤以及对返回结果的执行步骤;
拦截所述标记有SQL注解的目标方法;
对拦截后的目标方法进行参数填入,获得填入参数后的目标方法;
根据填入参数后的目标方法,获得所述SQL查询请求。
本说明书实施例,通过在客户端中编写SQL注解,基于动态代理的SQL注解,在调用标记有SQL注解的目标方法时,拦截该目标方法,对该目标方法进行参数的填充后,发送给搜索引擎的服务端,由服务端执行该目标方法,获得该目标方法的调用执行结果即为SQL查询的查询结果。基于动态代理的SQL注解,实现了将SQL的功能迁移至客户端中,在搜索引擎的客户端提供SQL的能力请求搜索引擎,降低了软件开发和学习成本。整个过程可以不需要安装SQL插件,实现了即使搜索引擎的服务端和客户端版本不匹配或服务端(或中间件)没有安装SQL插件,开发人员也能够使用SQL的功能,解决了搜索引擎的服务端和客户端版本差异化的问题。同时,服务端和客户端的版本可以不需要绑定,即可以不同步升级,降低了软件开发和维护的成本。
在上述实施例的基础上,本说明书一些实施例中,
所述查询请求发送模块具体用于:
以rest的方式将所述DSL查询请求发送值所述服务端。
本说明书实施例采用rest的方式与服务端进行请求,可以兼容所有ES/Zsearch等搜索引擎版本,可以解决搜索引擎如ES等大多数客户端版本与服务端绑定问题。
在上述实施例的基础上,本说明书一些实施例中,所述SQL注解中定义的对返回结果的执行步骤包括:对返回的查询请求的查询结果采用类型适配器进行数据类型的转换,所述装置还包括类型转换模块用于:
接收到所述服务端返回的所述查询结果后,根据SQL注解中定义的对返回结果的执行步骤获得所述标记有SQL注解的目标方法的返回类型,并利用类型适配器将所述查询结果转换为所述标记有SQL注解的目标方法对应的返回类型。
本说明书实施例利用类型适配器将服务端返回的调用查询结果转换为所需要的返回类型,不需要大量繁琐的类型转换代码,提高了开发效率,降低了软件开发成本。
在上述实施例的基础上,本说明书一些实施例中,所述查询请求接收模块具体用于:
接收调用带有SQL查询语言的目标方法的调用请求;
根据所述调用请求,获得所述SQL查询请求。
本说明书实施例开发人员也可以预先写好SQL,把写好的SQL直接给客户端的SQL执行器进行执行,实现了将SQL的功能迁移至客户端中,在搜索引擎的客户端提供SQL的能力请求搜索引擎,降低了软件开发和学习成本。
需要说明的,上述所述的装置根据方法实施例的描述还可以包括其他的实施方式。具体的实现方式可以参照上述对应的方法实施例的描述,在此不作一一赘述。
本说明书实施例还提供一种搜索引擎,如:ES搜索引擎或Zsearch搜索引擎,可以包括:客户端、服务端,其中:
所述客户端用于在接收到SQL查询请求后,对所述SQL查询请求进行解析,将所述SQL查询请求转换成DSL查询请求,并将所述DSL查询请求发送给所述服务端;其中,SQL查询请求包括调用标记有SQL注解的目标方法的调用请求,或调用带有SQL查询语言的目标方法的调用请求,所述SQL注解用于表征被注解的目标方法在本地客户端调用时执行的步骤以及对返回结果的执行步骤;
在所述查询请求为调用标记有SQL注解的目标方法的调用请求时,所述客户端还用于执行上述实施例中基于SQL注解进行SQL查询的方法;
所述服务端用于接收所述客户端发送的DSL查询请求,根据所述DSL查询请求执行对应的步骤,获得所述SQL查询请求对应的查询结果,并将所述查询结果返回给所述客户端。
需要说明的,上述所述的搜索引擎,根据方法实施例的描述还可以包括其他的实施方式。具体的实现方式可以参照上述对应的方法实施例的描述,在此不作一一赘述。
本说明书实施例,基于动态代理的SQL注解或在客户端写入SQL查询语言降低了开发成本和学习成本,可以在客户端(非中间件/服务端)层面提供SQL的能力请求搜索引擎,同时返回的数据会根据方法返回类型自动适配,提高了开发效率,降低了开发成本。
本说明书实施例还提供一种搜索引擎的查询请求处理设备,包括:至少一个处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现上述实施例中搜索引擎的查询请求处理方法,如:
接收SQL查询请求;
对所述SQL查询请求进行解析,将所述SQL查询请求转换成DSL查询请求;
将所述DSL查询请求发送至搜索引擎的服务端,以使得所述服务端根据所述DSL查询请求获得查询结果;
接收所述服务端返回的查询结果。
需要说明的,上述所述的处理设备,根据方法实施例的描述还可以包括其他的实施方式。具体的实现方式可以参照上述对应的方法实施例的描述,在此不作一一赘述。
本说明书提供的搜索引擎的查询请求处理装置或处理设备,也可以应用在多种数据分析处理系统中。所述系统或装置或处理设备可以包括上述实施例中任意一个搜索引擎的查询请求处理装置。所述的系统或装置或处理设备可以为单独的服务器,也可以包括使用了本说明书的一个或多个所述方法或一个或多个实施例装置的服务器集群、系统(包括分布式系统)、软件(应用)、实际操作装置、逻辑门电路装置、量子计算机等并结合必要的实施硬件的终端装置。所述核对差异数据的检测系统可以包括至少一个处理器以及存储计算机可执行指令的存储器,所述处理器执行所述指令时实现上述任意一个或者多个实施例中所述方法的步骤。
本说明书实施例所提供的方法实施例可以在移动终端、计算机终端、服务器或者类似的运算装置中执行。以运行在计算机终端上为例,图7是本说明书一个实施例中搜索引擎的查询请求处理计算机终端的硬件结构框图,该服务器可以是上述实施例中的搜索引擎的查询请求处理装置、客户端。如图7所示,计算机终端10可以包括一个或多个(图中仅示出一个)处理器100(处理器100可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器200、以及用于通信功能的传输模块300。本邻域普通技术人员可以理解,图7所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图7中所示更多或者更少的组件,例如还可以包括其他的处理硬件,如数据库或多级缓存、GPU,或者具有与图7所示不同的配置。
存储器200可用于存储应用软件的软件程序以及模块,如本说明书实施例中的搜索引擎的查询请求处理方法对应的程序指令/模块,处理器100通过运行存储在存储器200内的软件程序以及模块,从而执行各种功能应用以及资源数据更新。存储器200可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器200可进一步包括相对于处理器100远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输模块300用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端的通信供应商提供的无线网络。在一个实例中,传输模块300包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输模块300可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书提供的上述实施例所述的方法或装置可以通过计算机程序实现业务逻辑并记录在存储介质上,所述的存储介质可以计算机读取并执行,实现本说明书实施例所描述方案的效果。
所述存储介质可以包括用于存储信息的物理装置,通常是将信息数字化后再以利用电、磁或者光学等方式的媒体加以存储。所述存储介质有可以包括:利用电能方式存储信息的装置如,各式存储器,如RAM、ROM等;利用磁能方式存储信息的装置如,硬盘、软盘、磁带、磁芯存储器、磁泡存储器、U盘;利用光学方式存储信息的装置如,CD或DVD。当然,还有其他方式的可读存储介质,例如量子存储器、石墨烯存储器等等。
本说明书实施例提供的上述搜索引擎的查询请求处理方法或装置可以在计算机中由处理器执行相应的程序指令来实现,如使用windows操作系统的c++语言在PC端实现、linux系统实现,或其他例如使用android、iOS系统程序设计语言在智能终端实现,以及基于量子计算机的处理逻辑实现等。
需要说明的是说明书上述所述的装置、计算机存储介质、系统根据相关方法实施例的描述还可以包括其他的实施方式,具体的实现方式可以参照对应方法实施例的描述,在此不作一一赘述。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参考即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于硬件+程序类实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参考方法实施例的部分说明即可。
本说明书实施例并不局限于必须是符合行业通信标准、标准计算机资源数据更新和数据存储规则或本说明书一个或多个实施例所描述的情况。某些行业标准或者使用自定义方式或实施例描述的实施基础上略加修改后的实施方案也可以实现上述实施例相同、等同或相近、或变形后可预料的实施效果。应用这些修改或变形后的数据获取、存储、判断、处理方式等获取的实施例,仍然可以属于本说明书实施例的可选实施方案范围之内。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式资源数据更新环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程资源数据更新设备的处理器以产生一个机器,使得通过计算机或其他可编程资源数据更新设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程资源数据更新设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程资源数据更新设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参考即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参考方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。
Claims (14)
1.一种搜索引擎的查询请求处理方法,包括:
接收SQL查询请求;
在本地客户端对所述SQL查询请求进行解析,将所述SQL查询请求转换成DSL查询请求;
将所述DSL查询请求发送至搜索引擎的服务端,以使得所述服务端根据所述DSL查询请求获得查询结果;
接收所述服务端返回的查询结果。
2.如权利要求1所述的方法,所述接收SQL查询请求包括:
接收调用标记有SQL注解的目标方法的调用请求,所述SQL注解用于表征被注解的目标方法在本地客户端调用时执行的步骤以及对返回结果的执行步骤;
拦截所述标记有SQL注解的目标方法;
对拦截后的目标方法进行参数填入,获得填入参数后的目标方法;
根据填入参数后的目标方法,获得所述SQL查询请求。
3.如权利要求1所述的方法,所述将所述DSL查询请求发送至搜索引擎的服务端,包括:
以rest的方式将所述DSL查询请求发送值所述服务端。
4.如权利要求2所述的方法,所述SQL注解中定义的对返回结果的执行步骤包括:对返回的查询请求的查询结果采用类型适配器进行数据类型的转换,所述方法还包括:
接收到所述服务端返回的所述查询结果后,根据SQL注解中定义的对返回结果的执行步骤获得所述标记有SQL注解的目标方法的返回类型,并利用类型适配器将所述查询结果转换为所述标记有SQL注解的目标方法对应的返回类型。
5.如权利要求1所述的方法,接收的SQL查询请求包括:
接收调用带有SQL查询语言的目标方法的调用请求。
6.一种搜索引擎的查询请求处理装置,包括:
查询请求接收模块,用于接收SQL查询请求;
查询请求解析模块,用于在本地客户端对所述SQL查询请求进行解析,将所述SQL查询请求转换成DSL查询请求;
查询请求发送模块,用于将所述DSL查询请求发送至搜索引擎的服务端,以使得所述服务端根据所述DSL查询请求获得查询结果;
查询结果接收模块,用于接收所述服务端返回的查询结果。
7.如权利要求6所述的装置,所述查询请求接收模块具体用于:
接收调用标记有SQL注解的目标方法的调用请求,所述SQL注解用于表征被注解的目标方法在本地客户端调用时执行的步骤以及对返回结果的执行步骤;
拦截所述标记有SQL注解的目标方法;
对拦截后的目标方法进行参数填入,获得填入参数后的目标方法;
根据填入参数后的目标方法,获得所述SQL查询请求。
8.如权利要求6所述的装置,所述查询请求发送模块具体用于:
以rest的方式将所述DSL查询请求发送值所述服务端。
9.如权利要求7所述的装置,所述SQL注解中定义的对返回结果的执行步骤包括:对返回的查询请求的查询结果采用类型适配器进行数据类型的转换,所述装置还包括类型转换模块用于:
接收到所述服务端返回的所述查询结果后,根据SQL注解中定义的对返回结果的执行步骤获得所述标记有SQL注解的目标方法的返回类型,并利用类型适配器将所述查询结果转换为所述标记有SQL注解的目标方法对应的返回类型。
10.如权利要求6所述的装置,所述查询请求接收模块具体用于:
接收调用带有SQL查询语言的目标方法的调用请求;
根据所述调用请求,获得所述SQL查询请求。
11.一种搜索引擎的客户端,包括:SQL解析器、DSL执行器,其中,
所述SQL解析器用于对客户端接收到的SQL查询请求进行解析,将所述SQL查询请求转换成DSL查询请求;
所述DSL执行器用于将所述SQL解析器获得的所述DSL查询请求以rest的方式发送至搜索引擎的服务端,以使得所述服务端根据所述DSL查询请求获得查询结果。
12.如权利要求11所述的客户端,还包括:注解代理执行器、参数注入器、类型适配器,其中:
所述注解代理执行器,用于在所述客户端接收到标记有SQL注解的目标方法的调用请求时,拦截所述标记有SQL注解的目标方法,所述SQL注解用于表征被注解的目标方法在本地客户端调用时执行的步骤以及对返回结果的执行步骤;
所述参数注入器,用于对拦截的所述标记有SQL注解的目标方法填入参数,并将填入参数的目标方法返回所述注解代理执行器;
所述注解代理执行器将填入参数的目标方法发送至所述SQL解析器;
所述类型适配器,用于接收所述服务端返回的所述目标方法的查询结果,并根据所述目标方法的返回类型,将所述查询结果转换为所述目标方法对应的返回类型。
13.一种搜索引擎,包括:客户端、服务端,其中:
所述客户端用于在接收到SQL查询请求后,对所述SQL查询请求进行解析,将所述SQL查询请求转换成DSL查询请求,并将所述DSL查询请求发送给所述服务端;其中,SQL查询请求包括调用标记有SQL注解的目标方法的调用请求,或调用带有SQL查询语言的目标方法的调用请求,所述SQL注解用于表征被注解的目标方法在本地客户端调用时执行的步骤以及对返回结果的执行步骤;
在所述查询请求为调用标记有SQL注解的目标方法的调用请求时,所述客户端还用于执行权利要求2-4任一项所述的方法;
所述服务端用于接收所述客户端发送的DSL查询请求,根据所述DSL查询请求执行对应的步骤,获得所述SQL查询请求对应的查询结果,并将所述查询结果返回给所述客户端。
14.一种搜索引擎的查询请求处理设备,包括:至少一个处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现权利要求1-5任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010085992.8A CN111324803B (zh) | 2020-02-11 | 2020-02-11 | 搜索引擎的查询请求处理方法、装置及客户端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010085992.8A CN111324803B (zh) | 2020-02-11 | 2020-02-11 | 搜索引擎的查询请求处理方法、装置及客户端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111324803A true CN111324803A (zh) | 2020-06-23 |
CN111324803B CN111324803B (zh) | 2024-01-02 |
Family
ID=71170952
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010085992.8A Active CN111324803B (zh) | 2020-02-11 | 2020-02-11 | 搜索引擎的查询请求处理方法、装置及客户端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111324803B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112685613A (zh) * | 2021-01-06 | 2021-04-20 | 青岛海尔科技有限公司 | 一种资源包查询的方法、装置及信息处理系统 |
CN113111641A (zh) * | 2021-04-20 | 2021-07-13 | 上海渠杰信息科技有限公司 | 一种基于全文搜索引擎的数据操作方法及设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020064A (zh) * | 2011-09-20 | 2013-04-03 | 佳都新太科技股份有限公司 | 一种通过注解方式生成查询条件的方法和配置 |
CN103870555A (zh) * | 2014-03-04 | 2014-06-18 | 赛特斯信息科技股份有限公司 | Spring data JPA实现动态查询的方法 |
CN104679903A (zh) * | 2015-03-20 | 2015-06-03 | 亚信科技(南京)有限公司 | 一种数据表的操作方法及装置 |
CN106325856A (zh) * | 2016-08-10 | 2017-01-11 | 杭州玳数科技有限公司 | 一种实现Elasticsearch Dsl规则可视化编辑和数据展现的方法与系统 |
CN108491470A (zh) * | 2018-03-07 | 2018-09-04 | 北京奇安信科技有限公司 | 针对搜索服务器的管理方法、服务端及管理方法 |
CN109313639A (zh) * | 2016-12-06 | 2019-02-05 | 华为技术有限公司 | Dbms中进行查询执行的系统和方法 |
-
2020
- 2020-02-11 CN CN202010085992.8A patent/CN111324803B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020064A (zh) * | 2011-09-20 | 2013-04-03 | 佳都新太科技股份有限公司 | 一种通过注解方式生成查询条件的方法和配置 |
CN103870555A (zh) * | 2014-03-04 | 2014-06-18 | 赛特斯信息科技股份有限公司 | Spring data JPA实现动态查询的方法 |
CN104679903A (zh) * | 2015-03-20 | 2015-06-03 | 亚信科技(南京)有限公司 | 一种数据表的操作方法及装置 |
CN106325856A (zh) * | 2016-08-10 | 2017-01-11 | 杭州玳数科技有限公司 | 一种实现Elasticsearch Dsl规则可视化编辑和数据展现的方法与系统 |
CN109313639A (zh) * | 2016-12-06 | 2019-02-05 | 华为技术有限公司 | Dbms中进行查询执行的系统和方法 |
CN108491470A (zh) * | 2018-03-07 | 2018-09-04 | 北京奇安信科技有限公司 | 针对搜索服务器的管理方法、服务端及管理方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112685613A (zh) * | 2021-01-06 | 2021-04-20 | 青岛海尔科技有限公司 | 一种资源包查询的方法、装置及信息处理系统 |
CN113111641A (zh) * | 2021-04-20 | 2021-07-13 | 上海渠杰信息科技有限公司 | 一种基于全文搜索引擎的数据操作方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111324803B (zh) | 2024-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107239479B (zh) | 一种基于区块链的数据存储以及查询的方法及装置 | |
CN108628947B (zh) | 一种业务规则匹配处理方法、装置及处理设备 | |
US8997070B2 (en) | Extension mechanism for scripting language compiler | |
US8863082B2 (en) | Transformational context-aware data source management | |
US11556348B2 (en) | Bootstrapping profile-guided compilation and verification | |
CN110989939A (zh) | 一种数据缓存处理方法、装置、设备及缓存组件 | |
CN104391690A (zh) | 一种应用开发系统及方法 | |
CN111400681B (zh) | 数据权限处理方法、装置及设备 | |
CN106990979A (zh) | 一种配置信息更新方法、系统、客户端及服务器 | |
CN111324803B (zh) | 搜索引擎的查询请求处理方法、装置及客户端 | |
CN109062572A (zh) | 一种组件调用方法、装置、设备及存储介质 | |
CN116483859A (zh) | 数据查询方法及装置 | |
CN109284222B (zh) | 软件单元、数据处理系统中的项目测试方法、装置及设备 | |
US9116713B1 (en) | System and method for expression evaluation in a distributed networking environment | |
CN116521144A (zh) | 一种程序封装方法、装置及电子设备 | |
CN110941443B (zh) | 修改sdk中文件名的方法、装置及电子设备 | |
CN113326288A (zh) | 数据处理方法、装置、电子设备 | |
CN116541116A (zh) | 一种云原生系统的应用界面渲染方法、装置、介质及设备 | |
CN111338655A (zh) | 一种安装包分发方法和系统 | |
CN110502551A (zh) | 数据读写方法、系统及架构组件 | |
CN115390852A (zh) | 一种生成统一抽象语法树与程序分析的方法和装置 | |
CN114995790A (zh) | 一种组件开发方法、装置、计算机可读介质及电子设备 | |
CN114860202A (zh) | 项目运行方法、装置、服务器及存储介质 | |
CN113656290A (zh) | 一种mock点自动识别方法、装置以及设备 | |
CN111813843B (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 |