CN107133267A - 查询elasticsearch集群的方法、装置、电子设备和可读存储介质 - Google Patents
查询elasticsearch集群的方法、装置、电子设备和可读存储介质 Download PDFInfo
- Publication number
- CN107133267A CN107133267A CN201710211775.7A CN201710211775A CN107133267A CN 107133267 A CN107133267 A CN 107133267A CN 201710211775 A CN201710211775 A CN 201710211775A CN 107133267 A CN107133267 A CN 107133267A
- Authority
- CN
- China
- Prior art keywords
- clusters
- connection
- query statement
- result
- index
- 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
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- 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/21—Design, administration or maintenance of databases
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种查询elasticsearch集群的方法、装置、电子设备和可读存储介质,能够方便前端用户在不了解ES集群、无需建立JDBC连接的情况下,通过编写SQL语句,查询并使用ES集群。该方法包括:获取外部输入的SQL查询语句,并解析,以生成索引,然后根据所述索引,建立与ES集群的连接;将所述SQL查询语句转换为ES查询请求,然后通过所述连接将所述ES查询请求发送至所述ES集群;以及接收所述ES集群的返回结果,将所述返回结果解析成结果集。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种查询elasticsearch集群的方法、装置、电子设备和可读存储介质。
背景技术
elasticsearch(以下简称ES)是一个基于Lucene的开源分布式的搜索引擎。在大数据的搜索,分析方面,ES可以提供接近实时的可靠保障。当前,ES作为实时数据搜索引擎已经被广泛应用到各个场景中
现有技术中,大多使用elasticsearch-sql进行ES集群的查询。elasticsearch-sql是一个使用类SQL语句查询ES集群的插件,该插件提供了类SQL的查询方式,将类SQL语句转换为ES集群可识别的查询语言,并将查询结果展现在页面中。
使用elasticsearch-sql插件时,需要预先在ES集群中安装该插件,通过访问该插件所提供的Web页面,在输入框中输入类SQL句,可实现对ES集群的查询,并将结果以表格的形式展现在页面中。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
1.elasticsearch-sql是一个ES集群的插件,在使用时,要将该插件安装在集群服务器中,与ES集群的耦合度较高;
2.在ES集群中使用elasticsearch-sql插件,会造成ES集群内存占用过大,访问速率降低等,因此,各公司的ES集群一般会禁止安装该插件,这给elasticsearch-sql的使用造成了较大的困难;
3.elasticsearch-sql插件返回的结果集为ES原生的JSON串,结构复杂,虽然可通过前端JS的渲染,将其转换成了用户可读的格式,供用户查看,但对用户个性化定制方面的可支持性较差。
发明内容
有鉴于此,本发明实施例提供一种查询elasticsearch集群的方法、装置、电子设备和可读存储介质,能够方便前端用户在不了解ES集群、无需建立JDBC连接的情况下,通过编写SQL语句,查询并使用ES集群。
为实现上述目的,根据本发明的一个方面,提供了一种查询elasticsearch集群的方法。
本发明实施例的一种查询elasticsearch集群的方法包括:获取外部输入的SQL查询语句,并解析,以生成索引,然后根据所述索引,建立与ES集群的连接;将所述SQL查询语句转换为ES查询请求,然后通过所述连接将所述ES查询请求发送至所述ES集群;以及接收所述ES集群的返回结果,将所述返回结果解析成结果集。
可选地,获取外部输入的SQL查询语句,并解析,以生成索引包括:获取外部输入的SQL查询语句;读取配置文件中保存的ES集群的索引字段;解析所述SQL查询语句以判断所述SQL查询语句中是否存在所述索引字段,若存在,则根据所述索引字段的值生成索引,若不存在,则以当天日期生成索引。
可选地,根据所述索引,建立与ES集群的连接包括:根据所述索引,使用连接池建立与ES集群的连接,若连接池存在,则返回所述连接池中的一个空闲连接,若连接池不存在,则新建连接池并返回连接池中的一个连接。
可选地,将所述SQL查询语句转换为ES查询请求包括:解析所述SQL查询语句,根据所述SQL查询语句中包含的查询条件,生成过滤条件;根据所述查询条件中包含的字段,生成term聚合;以及根据函数的运算符,生成聚合函数。
可选地,将所述返回结果解析成结果集包括:判断所述查询结果的聚合类型,其中,所述聚合类型包括terms类型和InternalFilter类型;以及根据聚合类型的不同,对所述查询结果进行解析,然后将解析结果封装成ResultSet结果集。
可选地,所述方法还包括:将所述结果集经由JSF服务封装成前端可读模式。
为实现上述目的,根据本发明的另一方面,提供了一种查询elasticsearch集群的装置。
本发明实例的一种查询elasticsearch集群的装置包括:建立连接模块,用于获取外部输入的SQL查询语句,并解析,以生成索引,然后根据所述索引,建立与ES集群的连接;查询模块,用于将所述SQL查询语句转换为ES查询请求,然后通过所述连接将所述ES查询请求发送至所述ES集群;以及解析模块,用于接收所述ES集群的返回结果,将所述返回结果解析成结果集。
可选地,所述建立连接模块还用于:获取外部输入的SQL查询语句;读取配置文件中保存的ES集群的索引字段;解析所述SQL查询语句以判断所述SQL查询语句中是否存在所述索引字段,若存在,则根据所述索引字段的值生成索引,若不存在,则以当天日期生成索引。
可选地,所述建立连接模块还用于:根据所述索引,使用连接池建立与ES集群的连接,若连接池存在,则返回所述连接池中的一个空闲连接,若连接池不存在,则新建连接池并返回连接池中的一个连接。
可选地,所述查询模块还用于:解析所述SQL查询语句,根据所述SQL查询语句中包含的查询条件,生成过滤条件;根据所述查询条件中包含的字段,生成term聚合;以及根据函数的运算符,生成聚合函数。
可选地,所述解析模块还用于:判断所述查询结果的聚合类型,其中,所述聚合类型包括terms类型和InternalFilter类型;以及根据聚合类型的不同,对所述查询结果进行解析,然后将解析结果封装成ResultSet结果集。
可选地,所述装置还包括:封装模块,用于将所述结果集经由JSF服务封装成前端可读模式。
为实现上述目的,根据本发明的再一方面,提供了一种电子设备。
本发明实施例的一种电子设备包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明实施例的一种查询elasticsearch集群的方法。
为实现上述目的,根据本发明的再一方面,提供了一种计算机可读存储介质。
本发明实施例的一种计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行本发明实施例的一种查询elasticsearch集群的方法。
上述发明中的一个实施例具有如下优点或有益效果:通过使用独立于ES集群的中间件而非插件,封装本发明实施例中使用SQL查询elasticsearch集群的方法的各步骤的动作,从而可以实现在查询ES集群时无需预先将中间件安装在ES集群的服务器中,实现了与ES集群的低耦合;通过封装使用ES进行实时数据搜索时的相关操作,从而可以方便用户在不了解elasticsearch,也无需自行建立JDBC连接的情况下,通过一个服务接口传入SQL语句,获得相关查询结果,进而能够提高与实时数据相关的开发进度;通过使用SQL而非类SQL,从而能够通过编写简单的SQL语句查询ES集群,省去了用代码构造复杂的ES查询条件对象的过程;通过生成索引,并利用连接池的方式建立与ES集群的连接,从而能够方便且无性能浪费地与ES集群建立连接;通过将SQL查询语句解析成ES查询请求,从而能够进行包括求和、求平均值、时间聚合等多种函数的查询;通过将ES集群的返回结果解析成ResultSet结果集,从而可以实现查询结果的简单可读,并且针对该结果集,前端用户可自由地进行个性化开发。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的查询elasticsearch集群的方法的主要步骤的示意图;
图2是根据本发明实施例中实现查询elasticsearch集群的方法的中间件的框架示意图;
图3是根据本发明实施例的查询elasticsearch集群的方法的主要流程的示意图;
图4是根据本发明实施例的查询elasticsearch集群的方法的建立索引的主要流程示意图;
图5是根据本发明实施例的查询elasticsearch集群的方法的建立与ES集群的连接的主要流程示意图;
图6是根据本发明实施例的查询elasticsearch集群的方法的生成时间聚合函数的主要流程示意图;
图7是根据本发明实施例的查询elasticsearch集群的方法的解析时间聚合函数的主要流程示意图;
图8是根据本发明实施例的查询elasticsearch集群的装置的主要模块的示意图;
图9是用于实现本发明实施例的查询elasticsearch集群的方法的电子设备的硬件结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本发明实施例中,通过开发一中间件封,封装了使用SQL查询ES集群的各步骤操作,通过与ES集群建立连接来进行数据传输。它可以依赖HTTP、Web Service、JSF(JingdongService Framework,即“杰夫”,JSF服务是京东研发的一套服务框架,它适用的场景是分布式架构下,服务与服务之间的同步调用,可以实现高效的RPC调用)等对外提供服务。该中间件独立于ES集群存在,与ES集群的耦合度较低。
另外,本发明实施例的查询ES集群的方法解决了用户查询ES集群不方便的问题,通过该中间件,用户只需要在前端应用程序中引入该中间件服务,调用相关接口如HTTP接口、Web Service接口、JSF接口等,即可完成查询ES集群的相关工作。本发明实施例中,该中间件以JSF服务的方式发布为例,进行后续介绍,用户在使用该中间件时,实际上是调用该JSF服务接口,传入的参数是SQL,获取的结果是数据结果集。
此外,该中间件将ES集群返回的数据结果解析为通俗易懂的结果集,并输出给用户。用户可在该结果集的基础上,进行个性化定制开发。
图1是根据本发明实施例的查询elasticsearch集群的方法的主要步骤的示意图。
如图1所示,本发明实施例的查询elasticsearch集群的方法主要包括如下步骤:
步骤S11:获取外部输入的SQL查询语句,并解析,以生成索引,然后根据所述索引,建立与ES集群的连接。用户在前端的应用程序中通过调用封装该中间件的服务接口,可以进行方便的将SQL查询语句作为参数传入。由此,中间件可获取到外部输入的SQL查询语句。
获取到SQL查询语句后,需要读取相关的配置文件,配置文件中存储的是ES集群中建立索引用的索引字段,解析该SQL查询语句,获取生成索引用的索引字段,如果索引字段不存在,则默认查询的时间范围为当天,若索引字段存在,则根据该索引字段值建立相关索引。建立索引后,根据ES集群的相关信息,建立与ES集群的连接。
在步骤S11完成建立连接后,从步骤S12开始处理。
步骤S12:将所述SQL查询语句转换为ES查询请求,然后通过所述连接将所述ES查询请求发送至所述ES集群。通过解析SQL查询语句,将SQL查询语句转换成查询ES集群的JSON格式的查询语句,从而生成查询ES集群数据的请求Request。然后通过建立起的ES连接进行ES集群数据查询。
步骤S13:接收所述ES集群的返回结果,将所述返回结果解析成结果集。在接收到ES集群的返回结果后,为方便前端可读,将JSON(JavaScript Object Notation,是一种轻量级的数据交换格式)格式的返回结果解析成ResultSet结果集(ResultSet,数据库结果集的数据表,通常通过执行查询数据库的语句生成。ResultSet对象具有指向其当前数据行的指针),返回给用户。
通过本发明实施例的中间件,用户可以不用关心如何与ES集群进行连接,怎样编写查询ES集群的查询语句,以及如何解析结果集。该中间件封装了前述所有操作,调用方只需将SQL语句作为参数传入,便可查询到封装为ResultSet的结果集,供用户进行下一步的操作。
图2是根据本发明实施例中实现查询elasticsearch集群的方法的中间件的框架示意图。
如图2所示,该中间件封装了三部分功能。①解析SQL语句,建立与ES集群的连接;②根据SQL语句建立ES集群的请求Request,连接ES集群,查询结果;③解析返回结果为ResultSet结果集,并经JSF进行封装为前端可读模式,并返回给应用层的用户。
图3是根据本发明实施例的查询elasticsearch集群的方法的主要流程的示意图。
如图3所示,本发明实施例中,查询ES集群的方法的具体实现流程是:获取前端传入的SQL查询语句,读取相关的配置文件,配置文件中存储的是ES库中建立索引用的索引字段,解析该SQL查询语句,获取生成索引的索引字段,如果索引字段不存在,则默认查询的时间范围为当天,若索引字段存在,则根据该索引字段的值建立相关索引。建立索引后,根据ES集群的相关信息,建立连接,将SQL查询语句根据ES查询的规则解析成JSON串,通过索引以及集群信息建立ES连接,查询结果,此处的结果是ES封装过的结果集,解析该结果集,将其解析成通俗易懂的语言格式,并返回给查询用户。
其中,建立与ES集群的连接,事实上是建立一个客户端client,ES封装的Java API里提供了通过ES集群地址以及索引名称获取客户端client的方式。
本发明实施例的查询ES集群的方法的具体实现流程中,建立索引是建立ES连接时一个重要的步骤。图4是根据本发明实施例的查询elasticsearch集群的方法的建立索引的主要流程示意图。
如图4所示,获取到SQL语句后,首先读取配置文件中的索引字段,然后解析SQL查询语句,将where条件封装在实体类obj中,当obj为空时,索引字段为空,默认索引当天数据。如果obj不为空,遍历该where条件,查找索引字段,若该索引字段存在,则获取该索引字段值,并通过该索引字段值生成索引,否则,默认查询当天索引。
索引生成后,建立ES连接的准备工作都已完成。为避免频繁建立ES连接而造成资源损耗,使用连接池来管理所有连接。图5是根据本发明实施例的查询elasticsearch集群的方法的建立与ES集群的连接的主要流程示意图。
如图5所示,当有新的ES连接请求时,首先判断是否已存在一个连接池,若有则返回连接池中一个空闲连接,否则新建连接池,并通过该连接池,返回一个ES连接。新建连接池包括创建一个连接池,加载JDBC连接驱动,读取配置文件,根据JDBC的URL规则以及配置文件中的配置参数,生成连接URL,并设置连接池的连接URL为该值,设置连接池的其他参数,如最大存活数,最大空闲数等。
建立ES连接后,解析SQL语句,该中间件可以使用presto解析工具进行SQL语句的解析,将SQL解析结果存储在列表中,方便生成请求ES集群数据的请求Request。本发明实施例中,请求Request是SearchRequestBuilder类型,包含很多属性,如字段、函数、查询条件等。
生成请求Request时,遍历解析结果列表,首先根据查询条件,生成过滤语句,比如条件中有SKU=23322,那生成的过滤语句就可以是“"filter":{"term":{"sku":"23322"}}”,即只有SKU是23322的值才会通过此过滤条件;然后对于查询条件的每一个字段,生成一个term聚合;再根据每一个函数,判断其运算符,如果是求平均值,计数或者求最大最小值,则根据字段以及名称生成相关的聚合函数,如果是求和函数,则解析该函数的参数,判断是单参数还是复合方法,若是复合方法,则根据该方法,生成script脚本语句,并添加到ES集群的SUM聚合函数中,同时集成到ES总的查询语句中。如果是时间聚合函数,首先生成ES的时间聚合函数,设置函数的名称、时区等信息,同时,获取聚合的字段、方式等,集成到ES总的查询语句中。,讲述如何将SQL语句转变为查询ES集群的Request。图6即以生成SUM函数和时间聚合函数的过程为例,描述了将SQL语句转换为ES集群请求Request的主要流程。
此外,本发明实施例中,在前述解析SQL查询语句的过程中,除了可以使用presto解析工具之前,还可以使用sqlparser、Apache Calcite、druid等解析工具。其中,sqlparser支持的数据库最多,除了传统数据库外还支持Hive和Greenplum一类较新的数据库,调用比较方便,功能不错,但是其非开源,使用时需要付费。Apache Calcite是一个构建JDBC或者ODBC访问数据库的框架,通过自定义一些适配器Adapter利用SQL访问任意类型的数据,且其是开源的。但是SQL解析只是其一小部分功能,且只支持通用的文法树,无法对不同数据库提供本地化支持。Druid是阿里巴巴的开源项目,其主要功能是提交SQL进行监控统计,SQL-Parser是它的一个组件。
生成查询ES集群的请求Request后,通过建立的ES集群连接,向ES集群发送请求,并获得ES集群的返回结果。ES查询的返回结果是具有一定规则的JSON串,需要将JSON串转化成方便用户理解的格式。ES的返回结果是Aggregation聚合类型,Aggregation是ES机器计算后返回的原生结果集,后续需对其进行解析。因为返回结果的聚合类型主要有两种:terms和InternalFilter,所以需要判断具体类型,然后根据类型进行解析。其中,包含相关函数计算的,返回的是terms类型的Aggregation聚合,如果只是对字段的查询,不包含相关函数计算的,返回的是InternalFilter类型。
图7以解析时间聚合函数为例,展示如何进行查询结果的解析。如图7所示,时间聚合函数生成的聚合类型为terms。terms是由1到多个bucket组成,遍历每一个bucket,获取该bucket下的聚合列表,即子聚合,如果该列表为空,则记录当前列相关信息。否则,判断子聚合类型,如果是为terms,则保存当前列信息,然后进入递归。如果是InternalHistogram类型,即时间解析类型,则首先保存当前列信息,然后进入时间函数解析。同样,对于每一个Histogram的解析,先遍历每一个bucket,获得子聚合,对每一个子聚合进行解析并记录相关信息。最后,将解析结果封装在ResultSet结果集中,并返回给用户使用。
根据本发明实施例的查询elasticsearch集群的方法可以看出,通过使用独立于ES集群的中间件而非插件,封装本发明实施例中使用SQL查询elasticsearch集群的方法的各步骤的动作,从而可以实现在查询ES集群时无需预先将中间件安装在ES集群的服务器中,实现了与ES集群的低耦合;通过封装使用ES进行实时数据搜索时的相关操作,从而可以方便用户在不了解elasticsearch,也无需自行建立JDBC连接的情况下,通过一个服务接口传入SQL语句,获得相关查询结果,进而能够提高与实时数据相关的开发进度;通过使用SQL而非类SQL,从而能够通过编写简单的SQL语句查询ES集群,省去了用代码构造复杂的ES查询条件对象的过程;通过生成索引,并利用连接池的方式建立与ES集群的连接,从而能够方便且无性能浪费地与ES集群建立连接;通过将SQL查询语句解析成ES查询请求,从而能够进行包括求和、求平均值、时间聚合等多种函数的查询;通过将ES集群的返回结果解析成ResultSet结果集,从而可以实现查询结果的简单可读,并且针对该结果集,前端用户可自由地进行个性化开发。
图8是根据本发明实施例的查询elasticsearch集群的装置的主要模块的示意图。
如图8所示,本发明实施例的查询elasticsearch集群的装置80主要包括:建立连接模块801、查询模块802以及解析模块803,其中:建立连接模块801用于获取外部输入的SQL查询语句,并解析,以生成索引,然后根据所述索引,建立与ES集群的连接;查询模块802用于将所述SQL查询语句转换为ES查询请求,然后通过所述连接将所述ES查询请求发送至所述ES集群;以及解析模块803用于接收所述ES集群的返回结果,将所述返回结果解析成结果集。
其中,建立连接模块801还可用于:获取外部输入的SQL查询语句;读取配置文件中保存的ES集群的索引字段;解析所述SQL查询语句以判断所述SQL查询语句中是否存在所述索引字段,若存在,则根据所述索引字段的值生成索引,若不存在,则以当天日期生成索引。
另外,建立连接模块801还可用于:根据所述索引,使用连接池建立与ES集群的连接,若连接池存在,则返回所述连接池中的一个空闲连接,若连接池不存在,则新建连接池并返回连接池中的一个连接。
本发明实施例中,查询模块802还可进一步地用于:解析所述SQL查询语句,根据所述SQL查询语句中包含的查询条件,生成过滤条件;根据所述查询条件中包含的字段,生成term聚合;以及根据函数的运算符,生成聚合函数。
解析模块803还可用于:判断所述查询结果的聚合类型,其中,所述聚合类型包括terms类型和InternalFilter类型;以及根据聚合类型的不同,对所述查询结果进行解析,然后将解析结果封装成ResultSet结果集。
此外,本发明实施例的查询elasticsearch的装置80还可包括:封装模块(图中未示出),用于将所述结果集经由JSF服务封装成前端可读模式。
从以上描述可以看出,通过使用独立于ES集群的中间件而非插件,封装本发明实施例中使用SQL查询elasticsearch集群的方法的各步骤的动作,从而可以实现在查询ES集群时无需预先将中间件安装在ES集群的服务器中,实现了与ES集群的低耦合;通过封装使用ES进行实时数据搜索时的相关操作,从而可以方便用户在不了解elasticsearch,也无需自行建立JDBC连接的情况下,通过一个服务接口传入SQL语句,获得相关查询结果,进而能够提高与实时数据相关的开发进度;通过使用SQL而非类SQL,从而能够通过编写简单的SQL语句查询ES集群,省去了用代码构造复杂的ES查询条件对象的过程;通过生成索引,并利用连接池的方式建立与ES集群的连接,从而能够方便且无性能浪费地与ES集群建立连接;通过将SQL查询语句解析成ES查询请求,从而能够进行包括求和、求平均值、时间聚合等多种函数的查询;通过将ES集群的返回结果解析成ResultSet结果集,从而可以实现查询结果的简单可读,并且针对该结果集,前端用户可自由地进行个性化开发。
根据本发明的实施例,本发明还提供了一种电子设备和一种可读存储介质。
本发明的电子设备包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行本发明所提供的查询elasticsearch集群的方法。
本发明的计算机可读存储介质,所述计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行本发明所提供的查询elasticsearch集群的方法。
如图9所示,是用于实现本发明实施例的查询elasticsearch集群的方法的电子设备的硬件结构示意图。如图9,该电子设备包括:一个或多个处理器91以及存储器92,图9中以一个处理器91为例。其中,存储器92即为本发明所提供的计算机可读存储介质。
查询elasticsearch集群的方法的电子设备还可以包括:输入装置93和输出装置94。
处理器91、存储器92、输入装置93和输出装置94可以通过总线或者其他方式连接,图9中以通过总线连接为例。
存储器92作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的查询elasticsearch集群的方法对应的程序指令/模块(例如,附图8所示建立连接模块801、查询模块802和解析模块803)。处理器91通过运行存储在存储器92中的软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的查询elasticsearch集群的方法。
存储器92可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据查询elasticsearch集群的装置的使用所创建的数据等。此外,存储器92可以包括高速随机存取存储器,还可以包括存储器,例如至少一个磁盘存储器件、闪存器件、或其他固态存储器件。在一些实施例中,存储器92可选包括相对于处理器91远程设置的存储器,这些远程存储器可以通过网络连接至查询elasticsearch集群的装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置93可接收输入的数字或字符信息,以及产生与查询elasticsearch集群的装置的用户设置以及功能控制有关的键信号输入。输出装置94可包括显示屏等显示设备。
所述一个或者多个模块存储在所述存储器92中,当被所述一个或者多个处理器91执行时,执行上述任意方法实施例中的查询elasticsearch集群的方法。
上述产品可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例所提供的方法。
根据本发明实施例的技术方案,通过使用独立于ES集群的中间件而非插件,封装本发明实施例中使用SQL查询elasticsearch集群的方法的各步骤的动作,从而可以实现在查询ES集群时无需预先将中间件安装在ES集群的服务器中,实现了与ES集群的低耦合;通过封装使用ES进行实时数据搜索时的相关操作,从而可以方便用户在不了解elasticsearch,也无需自行建立JDBC连接的情况下,通过一个服务接口传入SQL语句,获得相关查询结果,进而能够提高与实时数据相关的开发进度;通过使用SQL而非类SQL,从而能够通过编写简单的SQL语句查询ES集群,省去了用代码构造复杂的ES查询条件对象的过程;通过生成索引,并利用连接池的方式建立与ES集群的连接,从而能够方便且无性能浪费地与ES集群建立连接;通过将SQL查询语句解析成ES查询请求,从而能够进行包括求和、求平均值、时间聚合等多种函数的查询;通过将ES集群的返回结果解析成ResultSet结果集,从而可以实现查询结果的简单可读,并且针对该结果集,前端用户可自由地进行个性化开发。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (14)
1.一种查询elasticsearch集群的方法,其特征在于,包括:
获取外部输入的SQL查询语句,并解析,以生成索引,然后根据所述索引,建立与ES集群的连接;
将所述SQL查询语句转换为ES查询请求,然后通过所述连接将所述ES查询请求发送至所述ES集群;以及
接收所述ES集群的返回结果,将所述返回结果解析成结果集。
2.根据权利要求1所述的方法,其特征在于,获取外部输入的SQL查询语句,并解析,以生成索引包括:
获取外部输入的SQL查询语句;
读取配置文件中保存的ES集群的索引字段;
解析所述SQL查询语句以判断所述SQL查询语句中是否存在所述索引字段,若存在,则根据所述索引字段的值生成索引,若不存在,则以当天日期生成索引。
3.根据权利要求1所述的方法,其特征在于,根据所述索引,建立与ES集群的连接包括:
根据所述索引,使用连接池建立与ES集群的连接,若连接池存在,则返回所述连接池中的一个空闲连接,若连接池不存在,则新建连接池并返回连接池中的一个连接。
4.根据权利要求1所述的方法,其特征在于,将所述SQL查询语句转换为ES查询请求包括:
解析所述SQL查询语句,根据所述SQL查询语句中包含的查询条件,生成过滤条件;
根据所述查询条件中包含的字段,生成term聚合;以及
根据函数的运算符,生成聚合函数。
5.根据权利要求1所述的方法,其特征在于,将所述返回结果解析成结果集包括:
判断所述查询结果的聚合类型,其中,所述聚合类型包括terms类型和InternalFilter类型;以及
根据聚合类型的不同,对所述查询结果进行解析,然后将解析结果封装成ResultSet结果集。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:将所述结果集经由JSF服务封装成前端可读模式。
7.一种查询elasticsearch集群的装置,其特征在于,包括:
建立连接模块,用于获取外部输入的SQL查询语句,并解析,以生成索引,然后根据所述索引,建立与ES集群的连接;
查询模块,用于将所述SQL查询语句转换为ES查询请求,然后通过所述连接将所述ES查询请求发送至所述ES集群;以及
解析模块,用于接收所述ES集群的返回结果,将所述返回结果解析成结果集。
8.根据权利要求7所述的装置,其特征在于,所述建立连接模块还用于:
获取外部输入的SQL查询语句;
读取配置文件中保存的ES集群的索引字段;
解析所述SQL查询语句以判断所述SQL查询语句中是否存在所述索引字段,若存在,则根据所述索引字段的值生成索引,若不存在,则以当天日期生成索引。
9.根据权利要求7所述的装置,其特征在于,所述建立连接模块还用于:
根据所述索引,使用连接池建立与ES集群的连接,若连接池存在,则返回所述连接池中的一个空闲连接,若连接池不存在,则新建连接池并返回连接池中的一个连接。
10.根据权利要求7所述的装置,其特征在于,所述查询模块还用于:
解析所述SQL查询语句,根据所述SQL查询语句中包含的查询条件,生成过滤条件;
根据所述查询条件中包含的字段,生成term聚合;以及
根据函数的运算符,生成聚合函数。
11.根据权利要求7所述的装置,其特征在于,所述解析模块还用于:
判断所述查询结果的聚合类型,其中,所述聚合类型包括terms类型和InternalFilter类型;以及
根据聚合类型的不同,对所述查询结果进行解析,然后将解析结果封装成ResultSet结果集。
12.根据权利要求7所述的装置,其特征在于,所述装置还包括:封装模块,用于将所述结果集经由JSF服务封装成前端可读模式。
13.一种电子设备,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-6中任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行权利要求1-6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710211775.7A CN107133267B (zh) | 2017-04-01 | 2017-04-01 | 查询elasticsearch集群的方法、装置、电子设备和可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710211775.7A CN107133267B (zh) | 2017-04-01 | 2017-04-01 | 查询elasticsearch集群的方法、装置、电子设备和可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107133267A true CN107133267A (zh) | 2017-09-05 |
CN107133267B CN107133267B (zh) | 2021-01-26 |
Family
ID=59716364
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710211775.7A Active CN107133267B (zh) | 2017-04-01 | 2017-04-01 | 查询elasticsearch集群的方法、装置、电子设备和可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107133267B (zh) |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107609130A (zh) * | 2017-09-18 | 2018-01-19 | 链家网(北京)科技有限公司 | 一种选择数据查询引擎的方法及服务器 |
CN107748766A (zh) * | 2017-09-28 | 2018-03-02 | 南威软件股份有限公司 | 一种基于Presto和Elasticsearch的大数据快速查询方法 |
CN107958080A (zh) * | 2017-12-14 | 2018-04-24 | 上海特易信息科技有限公司 | 一种基于ElasticSearch的大数据报表处理方法 |
CN108009296A (zh) * | 2017-12-27 | 2018-05-08 | 北京中关村科金技术有限公司 | 一种基于Hbase的SQL查询方法、系统及相关装置 |
CN108520019A (zh) * | 2018-03-22 | 2018-09-11 | 平安好房(上海)电子商务有限公司 | 数据管理方法、装置、设备及计算机可读存储介质 |
CN109145009A (zh) * | 2018-08-19 | 2019-01-04 | 杭州安恒信息技术股份有限公司 | 一种基于SQL检索ElasticSearch的方法 |
CN109408580A (zh) * | 2018-10-31 | 2019-03-01 | 北京百分点信息科技有限公司 | 一种跨数据源的sql编译装置及方法 |
CN109739882A (zh) * | 2019-01-04 | 2019-05-10 | 南威软件股份有限公司 | 一种基于Presto和Elasticsearch的大数据查询优化方法 |
CN109933589A (zh) * | 2019-03-15 | 2019-06-25 | 北京计算机技术及应用研究所 | 用于数据汇总的基于ElasticSearch聚合运算结果的数据结构转换方法 |
CN110059091A (zh) * | 2019-04-22 | 2019-07-26 | 成都四方伟业软件股份有限公司 | 索引构建的方法、装置、客户端、服务器及系统 |
CN110175031A (zh) * | 2019-04-25 | 2019-08-27 | 平安科技(深圳)有限公司 | Sql语言转成dsl语言的方法、装置、计算机设备和存储介质 |
CN110362595A (zh) * | 2019-07-19 | 2019-10-22 | 北京首汽智行科技有限公司 | 一种sql语句动态解析方法 |
CN110543517A (zh) * | 2019-08-26 | 2019-12-06 | 汉纳森(厦门)数据股份有限公司 | 一种基于Elasticsearch实现海量数据复杂查询方法、装置及介质 |
CN110703996A (zh) * | 2019-09-29 | 2020-01-17 | 苏州浪潮智能科技有限公司 | 基于tgt的集群句柄管理方法、系统、装置及可读存储介质 |
CN110968763A (zh) * | 2018-09-30 | 2020-04-07 | 北京国双科技有限公司 | 数据处理的方法及装置 |
CN111026931A (zh) * | 2019-12-09 | 2020-04-17 | 中国建设银行股份有限公司 | 一种数据查询方法、装置、设备及介质 |
CN112115150A (zh) * | 2020-08-03 | 2020-12-22 | 上海金仕达软件科技有限公司 | 嵌入式内存数据库的数据管理方法、终端设备及介质 |
CN112685446A (zh) * | 2020-12-31 | 2021-04-20 | 上海梦鱼信息科技有限公司 | 通过Elasticsearch数据库的复杂SQL查询方法、装置、处理器及存储介质 |
CN112765200A (zh) * | 2021-01-18 | 2021-05-07 | 武汉悦学帮网络技术有限公司 | 一种基于Elasticsearch的数据查询方法及装置 |
CN115080617A (zh) * | 2022-06-14 | 2022-09-20 | 北京智慧星光信息技术有限公司 | 一种基于网关流量控制的Elasticsearch查询方法及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1567301A (zh) * | 2003-06-23 | 2005-01-19 | 华为技术有限公司 | 访问数据库的方法及装置 |
CN104239365A (zh) * | 2013-06-24 | 2014-12-24 | 北京新媒传信科技有限公司 | 一种获取数据库连接池中连接的方法和数据库连接池 |
CN105224633A (zh) * | 2015-09-24 | 2016-01-06 | 北京锐安科技有限公司 | 基于SQL语言的solr查询方法及装置 |
CN106202207A (zh) * | 2016-06-28 | 2016-12-07 | 中国电子科技集团公司第二十八研究所 | 一种基于HBase‑ORM的索引及检索系统 |
CN106372176A (zh) * | 2016-08-30 | 2017-02-01 | 东华大学 | 一种支持对嵌套文档进行统一sql查询的方法 |
CN106503040A (zh) * | 2016-09-20 | 2017-03-15 | 福建天晴数码有限公司 | 适用sql查询方法的kv数据库及其创建方法 |
-
2017
- 2017-04-01 CN CN201710211775.7A patent/CN107133267B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1567301A (zh) * | 2003-06-23 | 2005-01-19 | 华为技术有限公司 | 访问数据库的方法及装置 |
CN104239365A (zh) * | 2013-06-24 | 2014-12-24 | 北京新媒传信科技有限公司 | 一种获取数据库连接池中连接的方法和数据库连接池 |
CN105224633A (zh) * | 2015-09-24 | 2016-01-06 | 北京锐安科技有限公司 | 基于SQL语言的solr查询方法及装置 |
CN106202207A (zh) * | 2016-06-28 | 2016-12-07 | 中国电子科技集团公司第二十八研究所 | 一种基于HBase‑ORM的索引及检索系统 |
CN106372176A (zh) * | 2016-08-30 | 2017-02-01 | 东华大学 | 一种支持对嵌套文档进行统一sql查询的方法 |
CN106503040A (zh) * | 2016-09-20 | 2017-03-15 | 福建天晴数码有限公司 | 适用sql查询方法的kv数据库及其创建方法 |
Non-Patent Citations (2)
Title |
---|
唐铸文 等: "《数据库原理及应用(第3版)》", 30 June 2014, 华中科技大学出版社 * |
山水佳音: "基于Calcite Elasticsearch实现的SQL ON ES方案设想", 《HTTPS://BLOG.CSDN.NET/CHINA_WORLD/ARTICLE/DETAILS/51141072?UTM_MEDIUM=DISTRIBUTE.PC_RELEVANT.NONE-TASK-BLOG-BLOGCOMMENDFROMBAIDU-20.NONECASE&DEPTH_1-UTM_SOURCE=DISTRIBUTE.PC_RELEVANT.NONE-TASK-BLOG-BLOGCOMMENDFROMBAIDU-20.NONECASE》 * |
Cited By (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107609130A (zh) * | 2017-09-18 | 2018-01-19 | 链家网(北京)科技有限公司 | 一种选择数据查询引擎的方法及服务器 |
CN107748766A (zh) * | 2017-09-28 | 2018-03-02 | 南威软件股份有限公司 | 一种基于Presto和Elasticsearch的大数据快速查询方法 |
CN107748766B (zh) * | 2017-09-28 | 2021-08-24 | 南威软件股份有限公司 | 一种基于Presto和Elasticsearch的大数据快速查询方法 |
CN107958080A (zh) * | 2017-12-14 | 2018-04-24 | 上海特易信息科技有限公司 | 一种基于ElasticSearch的大数据报表处理方法 |
CN108009296A (zh) * | 2017-12-27 | 2018-05-08 | 北京中关村科金技术有限公司 | 一种基于Hbase的SQL查询方法、系统及相关装置 |
CN108009296B (zh) * | 2017-12-27 | 2020-10-16 | 北京中关村科金技术有限公司 | 一种基于Hbase的SQL查询方法、系统及相关装置 |
CN108520019A (zh) * | 2018-03-22 | 2018-09-11 | 平安好房(上海)电子商务有限公司 | 数据管理方法、装置、设备及计算机可读存储介质 |
CN109145009A (zh) * | 2018-08-19 | 2019-01-04 | 杭州安恒信息技术股份有限公司 | 一种基于SQL检索ElasticSearch的方法 |
CN109145009B (zh) * | 2018-08-19 | 2020-10-27 | 杭州安恒信息技术股份有限公司 | 一种基于SQL检索ElasticSearch的方法 |
CN110968763A (zh) * | 2018-09-30 | 2020-04-07 | 北京国双科技有限公司 | 数据处理的方法及装置 |
CN109408580A (zh) * | 2018-10-31 | 2019-03-01 | 北京百分点信息科技有限公司 | 一种跨数据源的sql编译装置及方法 |
CN109739882A (zh) * | 2019-01-04 | 2019-05-10 | 南威软件股份有限公司 | 一种基于Presto和Elasticsearch的大数据查询优化方法 |
CN109933589B (zh) * | 2019-03-15 | 2021-03-05 | 北京计算机技术及应用研究所 | 用于数据汇总的基于ElasticSearch聚合运算结果的数据结构转换方法 |
CN109933589A (zh) * | 2019-03-15 | 2019-06-25 | 北京计算机技术及应用研究所 | 用于数据汇总的基于ElasticSearch聚合运算结果的数据结构转换方法 |
CN110059091B (zh) * | 2019-04-22 | 2020-08-11 | 成都四方伟业软件股份有限公司 | 索引构建的方法、装置、客户端、服务器及系统 |
CN110059091A (zh) * | 2019-04-22 | 2019-07-26 | 成都四方伟业软件股份有限公司 | 索引构建的方法、装置、客户端、服务器及系统 |
CN110175031A (zh) * | 2019-04-25 | 2019-08-27 | 平安科技(深圳)有限公司 | Sql语言转成dsl语言的方法、装置、计算机设备和存储介质 |
CN110175031B (zh) * | 2019-04-25 | 2023-08-18 | 平安科技(深圳)有限公司 | Sql语言转成dsl语言的方法、装置、计算机设备和存储介质 |
CN110362595A (zh) * | 2019-07-19 | 2019-10-22 | 北京首汽智行科技有限公司 | 一种sql语句动态解析方法 |
CN110543517B (zh) * | 2019-08-26 | 2022-05-10 | 汉纳森(厦门)数据股份有限公司 | 一种基于Elasticsearch实现海量数据复杂查询方法、装置及介质 |
CN110543517A (zh) * | 2019-08-26 | 2019-12-06 | 汉纳森(厦门)数据股份有限公司 | 一种基于Elasticsearch实现海量数据复杂查询方法、装置及介质 |
CN110703996B (zh) * | 2019-09-29 | 2022-07-22 | 苏州浪潮智能科技有限公司 | 基于tgt的集群句柄管理方法、系统、装置及可读存储介质 |
CN110703996A (zh) * | 2019-09-29 | 2020-01-17 | 苏州浪潮智能科技有限公司 | 基于tgt的集群句柄管理方法、系统、装置及可读存储介质 |
CN111026931A (zh) * | 2019-12-09 | 2020-04-17 | 中国建设银行股份有限公司 | 一种数据查询方法、装置、设备及介质 |
CN112115150A (zh) * | 2020-08-03 | 2020-12-22 | 上海金仕达软件科技有限公司 | 嵌入式内存数据库的数据管理方法、终端设备及介质 |
CN112115150B (zh) * | 2020-08-03 | 2024-03-19 | 上海金仕达软件科技股份有限公司 | 嵌入式内存数据库的数据管理方法、终端设备及介质 |
CN112685446B (zh) * | 2020-12-31 | 2023-07-25 | 上海梦鱼信息科技有限公司 | 通过Elasticsearch数据库的复杂SQL查询方法、装置、处理器及存储介质 |
CN112685446A (zh) * | 2020-12-31 | 2021-04-20 | 上海梦鱼信息科技有限公司 | 通过Elasticsearch数据库的复杂SQL查询方法、装置、处理器及存储介质 |
CN112765200A (zh) * | 2021-01-18 | 2021-05-07 | 武汉悦学帮网络技术有限公司 | 一种基于Elasticsearch的数据查询方法及装置 |
CN115080617A (zh) * | 2022-06-14 | 2022-09-20 | 北京智慧星光信息技术有限公司 | 一种基于网关流量控制的Elasticsearch查询方法及系统 |
CN115080617B (zh) * | 2022-06-14 | 2024-04-12 | 北京智慧星光信息技术有限公司 | 一种基于网关流量控制的Elasticsearch查询方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107133267B (zh) | 2021-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107133267A (zh) | 查询elasticsearch集群的方法、装置、电子设备和可读存储介质 | |
US9058360B2 (en) | Extensible language framework using data cartridges | |
US7383234B2 (en) | Extensible data mining framework | |
US8959106B2 (en) | Class loading using java data cartridges | |
US9495429B2 (en) | Automatic synthesis and presentation of OLAP cubes from semantically enriched data sources | |
US8549497B2 (en) | High-level hypermedia synthesis for adaptive web | |
CN107402995A (zh) | 一种分布式newSQL数据库系统及方法 | |
US8019860B2 (en) | Service accounting method and apparatus for composite service | |
US7007266B1 (en) | Method and software system for modularizing software components for business transaction applications | |
US20110161942A1 (en) | Service adaptation definition language | |
KR20060082393A (ko) | 저장된 프로시저의 정의로부터 관계형 데이터베이스애플리케이션의 미들 티어를 위한 데이터 액세스 계층을자동으로 생성하는 시스템 및 방법 | |
Fill | SeMFIS: a flexible engineering platform for semantic annotations of conceptual models | |
CN107689999A (zh) | 一种云平台全自动计算方法及装置 | |
Giove et al. | An approach for the development of portable applications on paas clouds | |
CN111026931A (zh) | 一种数据查询方法、装置、设备及介质 | |
CN112035197A (zh) | 一种前端页面的配置方法及装置 | |
US20140358963A1 (en) | Information retrieval from a database system | |
CN113962597A (zh) | 一种数据分析方法、装置、电子设备及存储介质 | |
CN106462415B (zh) | 访问开发系统中的语义内容 | |
US10324908B2 (en) | Exposing database artifacts | |
US9280361B2 (en) | Methods and systems for a real time transformation of declarative model and layout into interactive, digital, multi device forms | |
US10331781B2 (en) | Template compilation using view transforms | |
CN116360735A (zh) | 一种表单生成方法、装置、设备和介质 | |
US20090228432A1 (en) | Query Rewrite With A Nested Materialized View | |
US20140089207A1 (en) | System and method for providing high level view tracking of changes in sca artifacts |
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 |