CN107368578B - 一种快速生成es查询语句的方法及系统 - Google Patents
一种快速生成es查询语句的方法及系统 Download PDFInfo
- Publication number
- CN107368578B CN107368578B CN201710597904.0A CN201710597904A CN107368578B CN 107368578 B CN107368578 B CN 107368578B CN 201710597904 A CN201710597904 A CN 201710597904A CN 107368578 B CN107368578 B CN 107368578B
- Authority
- CN
- China
- Prior art keywords
- query
- type
- filter
- dsl
- generating
- 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.)
- Active
Links
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/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)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种快速生成ES查询语句的方法及系统,该方法包括以下步骤:(1)根据查询DSL规范新建立查询参数对象,使查询参数对象与查询DSL规范保持接口一致性;(2)获取前端的查询需求的查询内容得到查询条件,根据查询DSL规范新建过滤器对象,向步骤(1)建立的查询参数对象中添加查询条件和过滤器对象;(3)根据步骤(2)得到的查询参数对象进行解析设置,分别设置分页、多值域关键词查询和过滤器查询,生成包含叶查询子句和/或复合查询子句的查询对象,最终使用FastJSON生成查询DSL语句。本发明将服务端与客户端解耦并极大降低编写DSL的成本与准确率。
Description
技术领域
本发明属于分布式搜索的技术领域,尤其涉及一种快速生成ES查询语句的方法及系统。
背景技术
随着因特网的快速发展,当今时代互联网上的数据越来越多,如何从如此海量的数据中检索到对自己有用的信息,成为搜索引擎主要面临的问题。对于实时分布式搜索部分,提出了ES搜索方案,ES的实时性能很好,能够胜任分布式实时搜索的要求。
ES支持很多查询方式,其中一种就是DSL(Domain Specific Language,特定领域语言),它是把请求写在JSON里面,然后进行相关的查询;ES提供了Restful API方式来访问,使用json格式,这使得它非常利于与集群交互,JSON有多种生成工具,但是手动编写查询DSL费时费力,针对ES特有的match查询、multi_match查询、term查询、range查询以及bool查询的查询DSL的快速生成也没有很好的实现。
现有的数据访问API存在以下问题:
1)Transport Client方式提供了良好的访问API,但是Transport Client方式在使用时ES服务需要创建Java Client,每一次连接都实例化一个client,对系统的消耗很大,即使在使用完毕之后将client关闭掉,由于服务器不能及时回收socket资源,极端情况下会导致服务器达到最大连接数。并且这种查询方式需要引用几十个jar包,版本需要与服务端保持一致,系统升级存在不可控因素;
2)REST API手动编写查询DSL开发效率低,针对复杂的需求调试工作量较大。
综上所述,针对ES中的DSL查询方式如何解决快速生成DSL查询语句、提升查询DSL编码生产率与准确率的问题,尚缺乏有效的解决方案。
发明内容
本发明为了解决上述问题,提供一种快速生成ES查询语句的方法及系统。本发明将查询DSL进行分类整理,形成有序集合的查询对象并由查询服务进行解析,最终用FastJson生成查询DSL,实现查询DSL的快速生成,从而降低查询DSL编写成本。
本发明的第一目的是提供一种快速生成ES查询语句的方法。
为了实现上述目的,本发明采用如下一种技术方案:
一种快速生成ES查询语句的方法,该方法包括以下步骤:
(1)根据查询DSL规范新建立查询参数对象,使查询参数对象与查询DSL规范保持接口一致性;
(2)获取前端的查询需求的查询内容得到查询条件,根据查询DSL规范新建过滤器对象,向步骤(1)建立的查询参数对象中添加查询条件和过滤器对象;
(3)根据步骤(2)得到的查询参数对象进行解析设置,分别设置分页、多值域关键词查询和过滤器查询,生成包含叶查询子句和/或复合查询子句的查询对象,最终使用FastJSON生成查询DSL语句。
进一步的,所述步骤(1)的新建立的查询参数对象包括:文档索引名index、类型type、查询条数size、当前页page、查询字符串query、查询参数列表filters。
进一步的,所述步骤(1)中新建立的查询参数对象中的字段类型分别为:
文档索引名index的字段类型为string类型;
类型type的字段类型为string类型;
查询条数size的字段类型为integer类型,查询条数size的值可指定,若未指定其默认值为10;
当前页page的字段类型为integer类型,其默认值为0;
查询字符串query的字段类型为string类型,在查询需求为简单查询时使用,其默认值为空;
查询参数列表filters的字段类型为List<过滤器对象>类型。
进一步的,所述步骤(2)中的新建的过滤器对象包括:
查询键key,所述查询键key用于过滤查询类型type为term查询时使用;
查询值value,所述查询值value用于过滤查询类型type为term查询时使用;
过滤查询类型type,所述过滤查询类型type包括match查询、term查询、multi_match查询和range查询;
multi_match查询标志位multiMatchflag,所述multi_match查询标志位multiMatchflag包括best_fields类型、most_fields类型和cross_fields类型;
范围类型rangeType,所述范围类型rangeType包括闭区间范围、半开半闭区间范围和开区间范围,其中半开半闭区间范围包括左开右闭区间范围和左闭右开区间范围;
最大值maxValue;
最小值minValue;
bool查询类型boolType,所述bool查询类型包括must查询、must_not查询和should查询;
最小匹配个数minimumShouldMatch,所述最小匹配个数minimumShouldMatch用于bool查询类型boolType中的should查询时使用;
日期匹配isDate,所述日期匹配isDate用于查询是否为日期匹配时使用;
日期格式dataFormat。
进一步的,所述步骤(2)中的新建的过滤器对象中的字段类型分别为:
查询键key的字段类型为string类型;
查询值value的字段类型为object类型;
过滤查询类型type的字段类型为integer类型,其取值范围为[1,4],依次代表match查询、term查询、multi_match查询和range查询;
multi_match查询标志位multiMatchflag的字段类型为integer类型,其取值范围为[0,2],依次代表best_fields类型、most_fields类型和cross_fields类型;
范围类型rangeType的字段类型为integer类型,其取值范围为[1,4],依次代表闭区间范围、左闭右开区间范围、左开右闭区间范围和开区间范围;
最大值maxValue的字段类型为object类型;
最小值minValue的字段类型为object类型;
bool查询类型boolType的字段类型为integer类型,其取值范围为[1,3],依次代表must查询、must_not查询和should查询;
最小匹配个数minimumShouldMatch的字段类型为integer类型,其默认值为1;
日期匹配isDate的字段类型为bool类型,其默认值为FALSE;
日期格式dataFormat的字段类型为string类型。
进一步的,所述步骤(3)中,根据步骤(2)得到的查询参数对象进行解析设置,生成包含叶查询子句和/或复合查询子句的查询对象的具体步骤为:
(3-1)新建请求对象SearchRequest,设置分页参数;
(3-2)新建查询体query对象,设置多值域关键词查询,将新建的查询体query对象和步骤(2)中得到的查询参数对象赋值到多值域关键词查询中,并返回查询体query对象;并设置过滤器查询,将新建的查询体query对象和步骤(2)中得到的查询参数对象赋值到过滤器查询中,并返回查询体query对象;
(3-3)将查询体query对象赋值到请求对象SearchRequest中;
(3-4)使用FastJSON将步骤(3-3)中的请求对象SearchRequest生成查询DSL。
进一步的,所述步骤(3-1)中,新建的请求对象SearchRequest包括:DSL查询体query、类型from和查询条数size;
其中,DSL查询体query的字段类型为query类型,类型from的字段类型为integer类型,查询条数size的字段类型为integer类型,查询条数size的值可指定,若未指定其默认值为10。
进一步的,所述步骤(3-2)中,新建的查询体query对象包括:多值域关键词查询和过滤器查询;
设置多值域关键词查询:判断是否存在查询语句,若存在,新建多值域关键词查询,添加查询内容以及查询字段数组并返回查询体query对象;
设置过滤器查询:根据步骤(2)得到的查询参数对象中的过滤器对象进行循环,在循环中根据bool查询类型boolType的取值建立bool查询下的must查询、filter查询和should查询,根据过滤查询类型type的取值建立相应的查询条件,并返回查询体query对象。
本发明的第二目的是提供基于快速生成ES查询语句的方法的存储设备。
为了实现上述目的,本发明采用如下一种技术方案:
一种存储设备,其中存储有多条指令,所述指令适于由处理器加载并执行:
(1)根据查询DSL规范新建立查询参数对象,使查询参数对象与查询DSL规范保持接口一致性;
(2)获取前端的查询需求的查询内容得到查询条件,根据查询DSL规范新建过滤器对象,向步骤(1)建立的查询参数对象中添加查询条件和过滤器对象;
(3)根据步骤(2)得到的查询参数对象进行解析设置,分别设置分页、多值域关键词查询和过滤器查询,生成包含叶查询子句和/或复合查询子句的查询对象,最终使用FastJSON生成查询DSL语句。
本发明的第三目的是提供基于快速生成ES查询语句的方法的服务终端。
为了实现上述目的,本发明采用如下一种技术方案:
一种服务终端,包括:
处理器,适于实现各指令;以及
存储设备,适于存储多条指令,所述指令适于由处理器加载并执行:
(1)根据查询DSL规范新建立查询参数对象,使查询参数对象与查询DSL规范保持接口一致性;
(2)获取前端的查询需求的查询内容得到查询条件,根据查询DSL规范新建过滤器对象,向步骤(1)建立的查询参数对象中添加查询条件和过滤器对象;
(3)根据步骤(2)得到的查询参数对象进行解析设置,分别设置分页、多值域关键词查询和过滤器查询,生成包含叶查询子句和/或复合查询子句的查询对象,最终使用FastJSON生成查询DSL语句。
本发明的基于快速生成ES查询语句的方法的服务终端与REST客户端,进行指令交互及数据传输。根据查询内容进行解析并生成查询DSL传输到ES,实现数据查询的功能。该方法从使用java API的方式中解放出来,不再依赖特定的jar包版本,从而将服务端与客户端解耦,能够快速的对ES主程序进行升级,而不必同时升级查询程序。
本发明的有益效果:
(1)本发明的一种快速生成ES查询语句的方法及系统,为快速编写查询DSL提供了方向,极大降低编写DSL的成本与准确率。
(2)本发明的一种快速生成ES查询语句的方法及系统,使得ES查询从使用javaAPI的方式中解放出来,不再依赖特定的jar包版本,从而将服务端与客户端解耦,能够快速的对ES主程序进行升级,而不必同时升级查询程序。
附图说明
图1为本发明的方法流程图。
具体实施方式:
应该指出,以下详细说明都是例示性的,旨在对本申请提供进一步的说明。除非另有指明,本发明使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
术语解释部分:
ES:是ElasticSearch的简称,是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎。ES是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
Fastjson:是一个Java语言编写的高性能功能完善的JSON库。它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致,是目前Java语言中最快的JSON库。Fastjson接口简单易用,已经被广泛使用在缓存序列化、协议交互、Web输出、Android客户端等多种应用场景。
查询DSL:ES提供一种JSON风格的特定领域语言,利用它可以执行查询。允许你构建更加复杂、强大的查询。DSL(Domain Specific Language特定领域语言)以JSON请求体的形式出现。
在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面结合附图与实施例对本发明作进一步说明。
实施例1:
本实施例为了解决上述问题,提供一种快速生成ES查询语句的方法。本发明将查询DSL进行分类整理,形成有序集合的查询对象并由查询服务进行解析,最终用FastJson生成查询DSL,实现查询DSL的快速生成,从而降低查询DSL编写成本。
为了实现上述目的,本发明采用如下一种技术方案:
如图1所示,
一种快速生成ES查询语句的方法,该方法包括以下步骤:
(1)查询对象新建:根据查询DSL规范新建立查询参数对象,使查询参数对象与查询DSL规范保持接口一致性;
(2)查询内容赋值:获取前端的查询需求的查询内容得到查询条件,根据查询DSL规范新建过滤器对象,向步骤(1)建立的查询参数对象中添加查询条件和过滤器对象;
(3)请求对象创建:新建请求对象,设置分页参数;
(4)查询对象分析:根据新建的请求对象,设置多值域关键词查询和过滤器查询,生成包含叶查询子句和/或复合查询子句的查询对象;
(5)查询DSL生成:使用FastJSON生成包含查询条件和过滤器的查询DSL。
在本实施例中,所述步骤(1)的新建立的查询参数对象包括:文档索引名index、类型type、查询条数size、当前页page、查询字符串query、查询参数列表filters。
表1
如表1所示,所述步骤(1)中新建立的查询参数对象中的字段类型分别为:
文档索引名index的字段类型为string类型;
类型type的字段类型为string类型;
查询条数size的字段类型为integer类型,查询条数size的值可指定,若未指定其默认值为10;
当前页page的字段类型为integer类型,其默认值为0;
查询字符串query的字段类型为string类型,在查询需求为简单查询时使用,其默认值为空;
查询参数列表filters的字段类型为List<过滤器对象>类型。
在本实施例中,所述步骤(2)中的新建的过滤器对象包括:
查询键key,所述查询键key用于过滤查询类型type为term查询时使用;
查询值value,所述查询值value用于过滤查询类型type为term查询时使用;
过滤查询类型type,所述过滤查询类型type包括match查询、term查询、multi_match查询和range查询;
multi_match查询标志位multiMatchflag,所述multi_match查询标志位multiMatchflag包括best_fields类型、most_fields类型和cross_fields类型;
范围类型rangeType,所述范围类型rangeType包括闭区间范围、半开半闭区间范围和开区间范围,其中半开半闭区间范围包括左开右闭区间范围和左闭右开区间范围;
最大值maxValue;
最小值minValue;
bool查询类型boolType,所述bool查询类型包括must查询、must_not查询和should查询;
最小匹配个数minimumShouldMatch,所述最小匹配个数minimumShouldMatch用于bool查询类型boolType中的should查询时使用;
日期匹配isDate,所述日期匹配isDate用于查询是否为日期匹配时使用;
日期格式dataFormat。
表2
如表2所示,所述步骤(2)中的新建的过滤器对象中的字段类型分别为:
查询键key的字段类型为string类型;
查询值value的字段类型为object类型;
过滤查询类型type的字段类型为integer类型,其取值范围为[1,4],依次代表match查询、term查询、multi_match查询和range查询;
multi_match查询标志位multiMatchflag的字段类型为integer类型,其取值范围为[0,2],依次代表best_fields类型、most_fields类型和cross_fields类型;
范围类型rangeType的字段类型为integer类型,其取值范围为[1,4],依次代表闭区间范围、左闭右开区间范围、左开右闭区间范围和开区间范围;
最大值maxValue的字段类型为object类型;
最小值minValue的字段类型为object类型;
bool查询类型boolType的字段类型为integer类型,其取值范围为[1,3],依次代表must查询、must_not查询和should查询;
最小匹配个数minimumShouldMatch的字段类型为integer类型,其默认值为1;
日期匹配isDate的字段类型为bool类型,其默认值为FALSE;
日期格式dataFormat的字段类型为string类型。
在本实施例中,范围类型rangeType的闭区间范围、左闭右开区间范围、左开右闭区间范围和开区间范围按照DSL的表示,大于等于为“gte”,小于等于为“lte”,大于为“gt”,小于为“lt”。
设置范围类型rangeType的程序为:
在本实施例,所述步骤(3)中,如表3所示,新建的请求对象SearchRequest包括:DSL查询体query、类型from和查询条数size;
其中,DSL查询体query的字段类型为query类型,类型from的字段类型为integer类型,查询条数size的字段类型为integer类型,查询条数size的值可指定,若未指定其默认值为10。
表3
在本实施例中,所述步骤(4)中,根据步骤(2)得到的查询参数对象进行解析设置,生成包含叶查询子句和/或复合查询子句的查询对象的具体步骤为:
(4-1)如表4所示,新建查询体query对象,设置多值域关键词查询,将新建的查询体query对象和步骤(2)中得到的查询参数对象赋值到多值域关键词查询中,并返回查询体query对象;并设置过滤器查询,将新建的查询体query对象和步骤(2)中得到的查询参数对象赋值到过滤器查询中,并返回查询体query对象;
(4-2)将查询体query对象赋值到请求对象SearchRequest中;
表4
所述步骤(4-1)中,新建的查询体query对象包括:多值域关键词查询和过滤器查询;
设置多值域关键词查询:判断是否存在查询语句,若存在,如表5所示,新建多值域关键词查询,添加查询内容以及查询字段数组并返回查询体query对象;
表5
设置过滤器查询:根据步骤(2)得到的查询参数对象中的过滤器对象进行循环,在循环中根据bool查询类型boolType的取值建立bool查询下的must查询、filter查询和should查询,根据过滤查询类型type的取值建立相应的查询条件,并返回查询体query对象。其中查询条件Condition:如表6所示,
表6
在步骤(5)中使用FastJSON将步骤(4-2)中的请求对象SearchRequest生成查询DSL。
实施例2:
本发明的第二目的是提供基于快速生成ES查询语句的方法的存储设备。
为了实现上述目的,本发明采用如下一种技术方案:
一种存储设备,其中存储有多条指令,所述指令适于由处理器加载并执行:
(1)根据查询DSL规范新建立查询参数对象,使查询参数对象与查询DSL规范保持接口一致性;
(2)获取前端的查询需求的查询内容得到查询条件,根据查询DSL规范新建过滤器对象,向步骤(1)建立的查询参数对象中添加查询条件和过滤器对象;
(3)根据步骤(2)得到的查询参数对象进行解析设置,分别设置分页、多值域关键词查询和过滤器查询,生成包含叶查询子句和/或复合查询子句的查询对象,最终使用FastJSON生成查询DSL语句。
实施例3:
本发明的第三目的是提供基于快速生成ES查询语句的方法的服务终端。
为了实现上述目的,本发明采用如下一种技术方案:
一种服务终端,包括:
处理器,适于实现各指令;以及
存储设备,适于存储多条指令,所述指令适于由处理器加载并执行:
(1)根据查询DSL规范新建立查询参数对象,使查询参数对象与查询DSL规范保持接口一致性;
(2)获取前端的查询需求的查询内容得到查询条件,根据查询DSL规范新建过滤器对象,向步骤(1)建立的查询参数对象中添加查询条件和过滤器对象;
(3)根据步骤(2)得到的查询参数对象进行解析设置,分别设置分页、多值域关键词查询和过滤器查询,生成包含叶查询子句和/或复合查询子句的查询对象,最终使用FastJSON生成查询DSL语句。
本发明的基于快速生成ES查询语句的方法的服务终端与REST客户端,进行指令交互及数据传输。根据查询内容进行解析并生成查询DSL传输到ES,实现数据查询的功能。该方法从使用java API的方式中解放出来,不再依赖特定的jar包版本,从而将服务端与客户端解耦,能够快速的对ES主程序进行升级,而不必同时升级查询程序。
本发明的有益效果:
(1)本发明的一种快速生成ES查询语句的方法及系统,为快速编写查询DSL提供了方向,极大降低编写DSL的成本与准确率。
(2)本发明的一种快速生成ES查询语句的方法及系统,使得ES查询从使用javaAPI的方式中解放出来,不再依赖特定的jar包版本,从而将服务端与客户端解耦,能够快速的对ES主程序进行升级,而不必同时升级查询程序。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (9)
1.一种快速生成ES查询语句的方法,其特征是:该方法包括以下步骤:
(1)根据查询DSL规范新建立查询参数对象,使查询参数对象与查询DSL规范保持接口一致性;
(2)获取前端的查询需求的查询内容得到查询条件,根据查询DSL规范新建过滤器对象,向步骤(1)建立的查询参数对象中添加查询条件和过滤器对象;
(3)根据步骤(2)得到的查询参数对象进行解析设置,分别设置分页、多值域关键词查询和过滤器查询,生成包含叶查询子句和/或复合查询子句的查询对象,最终使用FastJSON生成查询DSL语句;
所述步骤(3)中,根据步骤(2)得到的查询参数对象进行解析设置,生成包含叶查询子句和/或复合查询子句的查询对象的具体步骤为:
(3-1)新建请求对象SearchRequest,设置分页参数;
(3-2)新建查询体query对象,设置多值域关键词查询,将新建的查询体query对象和步骤(2)中得到的查询参数对象赋值到多值域关键词查询中,并返回查询体query对象;并设置过滤器查询,将新建的查询体query对象和步骤(2)中得到的查询参数对象赋值到过滤器查询中,并返回查询体query对象;
(3-3)将查询体query对象赋值到请求对象SearchRequest中;
(3-4)使用FastJSON将步骤(3-3)中的请求对象SearchRequest生成查询DSL。
2.如权利要求1所述的一种快速生成ES查询语句的方法,其特征是:所述步骤(1)的新建立的查询参数对象包括:文档索引名index、类型type、查询条数size、当前页page、查询字符串query、查询参数列表filters。
3.如权利要求2所述的一种快速生成ES查询语句的方法,其特征是:所述步骤(1)中新建立的查询参数对象中的字段类型分别为:
文档索引名index的字段类型为string类型;
类型type的字段类型为string类型;
查询条数size的字段类型为integer类型,查询条数size的值可指定,若未指定其默认值为10;
当前页page的字段类型为integer类型,其默认值为0;
查询字符串query的字段类型为string类型,在查询需求为简单查询时使用,其默认值为空;
查询参数列表filters的字段类型为List<过滤器对象>类型。
4.如权利要求1所述的一种快速生成ES查询语句的方法,其特征是:所述步骤(2)中的新建的过滤器对象包括:
查询键key,所述查询键key用于过滤查询类型type为term查询时使用;
查询值value,所述查询值value用于过滤查询类型type为term查询时使用;
过滤查询类型type,所述过滤查询类型type包括match查询、term查询、multi_match查询和range查询;
multi_match查询标志位multiMatchflag,所述multi_match查询标志位multiMatchflag包括best_fields类型、most_fields类型和cross_fields类型;
范围类型rangeType,所述范围类型rangeType包括闭区间范围、半开半闭区间范围和开区间范围,其中半开半闭区间范围包括左开右闭区间范围和左闭右开区间范围;
最大值maxValue;
最小值minValue;
bool查询类型boolType,所述bool查询类型包括must查询、must_not查询和should查询;
最小匹配个数minimumShouldMatch,所述最小匹配个数minimumShouldMatch用于bool查询类型boolType中的should查询时使用;
日期匹配isDate,所述日期匹配isDate用于查询是否为日期匹配时使用;
日期格式dataFormat。
5.如权利要求4所述的一种快速生成ES查询语句的方法,其特征是:所述步骤(2)中的新建的过滤器对象中的字段类型分别为:
查询键key的字段类型为string类型;
查询值value的字段类型为object类型;
过滤查询类型type的字段类型为integer类型,其取值范围为[1,4],依次代表match查询、term查询、multi_match查询和range查询;
multi_match查询标志位multiMatchflag的字段类型为integer类型,其取值范围为[0,2],依次代表best_fields类型、most_fields类型和cross_fields类型;
范围类型rangeType的字段类型为integer类型,其取值范围为[1,4],依次代表闭区间范围、左闭右开区间范围、左开右闭区间范围和开区间范围;
最大值maxValue的字段类型为object类型;
最小值minValue的字段类型为object类型;
bool查询类型boolType的字段类型为integer类型,其取值范围为[1,3],依次代表must查询、must_not查询和should查询;
最小匹配个数minimumShouldMatch的字段类型为integer类型,其默认值为1;
日期匹配isDate的字段类型为bool类型,其默认值为FALSE;
日期格式dataFormat的字段类型为string类型。
6.如权利要求1所述的一种快速生成ES查询语句的方法,其特征是:所述步骤(3-1)中,新建的请求对象SearchRequest包括:DSL查询体query、类型from和查询条数size;
其中,DSL查询体query的字段类型为query类型,类型from的字段类型为integer类型,查询条数size的字段类型为integer类型,查询条数size的值可指定,若未指定其默认值为10。
7.如权利要求1所述的一种快速生成ES查询语句的方法,其特征是:所述步骤(3-2)中,新建的查询体query对象包括:多值域关键词查询和过滤器查询;
设置多值域关键词查询:判断是否存在查询语句,若存在,新建多值域关键词查询,添加查询内容以及查询字段数组并返回查询体query对象;
设置过滤器查询:根据步骤(2)得到的查询参数对象中的过滤器对象进行循环,在循环中根据bool查询类型boolType的取值建立bool查询下的must查询、filter查询和should查询,根据过滤查询类型type的取值建立相应的查询条件,并返回查询体query对象。
8.一种存储设备,其特征是:其中存储有多条指令,所述指令适于由处理器加载并执行:
(1)根据查询DSL规范新建立查询参数对象,使查询参数对象与查询DSL规范保持接口一致性;
(2)获取前端的查询需求的查询内容得到查询条件,根据查询DSL规范新建过滤器对象,向步骤(1)建立的查询参数对象中添加查询条件和过滤器对象;
(3)根据步骤(2)得到的查询参数对象进行解析设置,分别设置分页、多值域关键词查询和过滤器查询,生成包含叶查询子句和/或复合查询子句的查询对象,最终使用FastJSON生成查询DSL语句;
所述步骤(3)中,根据步骤(2)得到的查询参数对象进行解析设置,生成包含叶查询子句和/或复合查询子句的查询对象的具体步骤为:
(3-1)新建请求对象SearchRequest,设置分页参数;
(3-2)新建查询体query对象,设置多值域关键词查询,将新建的查询体query对象和步骤(2)中得到的查询参数对象赋值到多值域关键词查询中,并返回查询体query对象;并设置过滤器查询,将新建的查询体query对象和步骤(2)中得到的查询参数对象赋值到过滤器查询中,并返回查询体query对象;
(3-3)将查询体query对象赋值到请求对象SearchRequest中;
(3-4)使用FastJSON将步骤(3-3)中的请求对象SearchRequest生成查询DSL。
9.一种服务终端,其特征是:包括:
处理器,适于实现各指令;以及
存储设备,适于存储多条指令,所述指令适于由处理器加载并执行:
(1)根据查询DSL规范新建立查询参数对象,使查询参数对象与查询DSL规范保持接口一致性;
(2)获取前端的查询需求的查询内容得到查询条件,根据查询DSL规范新建过滤器对象,向步骤(1)建立的查询参数对象中添加查询条件和过滤器对象;
(3)根据步骤(2)得到的查询参数对象进行解析设置,分别设置分页、多值域关键词查询和过滤器查询,生成包含叶查询子句和/或复合查询子句的查询对象,最终使用FastJSON生成查询DSL语句;
所述步骤(3)中,根据步骤(2)得到的查询参数对象进行解析设置,生成包含叶查询子句和/或复合查询子句的查询对象的具体步骤为:
(3-1)新建请求对象SearchRequest,设置分页参数;
(3-2)新建查询体query对象,设置多值域关键词查询,将新建的查询体query对象和步骤(2)中得到的查询参数对象赋值到多值域关键词查询中,并返回查询体query对象;并设置过滤器查询,将新建的查询体query对象和步骤(2)中得到的查询参数对象赋值到过滤器查询中,并返回查询体query对象;
(3-3)将查询体query对象赋值到请求对象SearchRequest中;
(3-4)使用FastJSON将步骤(3-3)中的请求对象SearchRequest生成查询DSL。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710597904.0A CN107368578B (zh) | 2017-07-20 | 2017-07-20 | 一种快速生成es查询语句的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710597904.0A CN107368578B (zh) | 2017-07-20 | 2017-07-20 | 一种快速生成es查询语句的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107368578A CN107368578A (zh) | 2017-11-21 |
CN107368578B true CN107368578B (zh) | 2020-05-12 |
Family
ID=60307220
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710597904.0A Active CN107368578B (zh) | 2017-07-20 | 2017-07-20 | 一种快速生成es查询语句的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107368578B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110609945A (zh) * | 2018-05-29 | 2019-12-24 | 优信拍(北京)信息科技有限公司 | 一种二手车业务数据的查询方法,装置及系统 |
CN110175031B (zh) * | 2019-04-25 | 2023-08-18 | 平安科技(深圳)有限公司 | Sql语言转成dsl语言的方法、装置、计算机设备和存储介质 |
CN110543517B (zh) * | 2019-08-26 | 2022-05-10 | 汉纳森(厦门)数据股份有限公司 | 一种基于Elasticsearch实现海量数据复杂查询方法、装置及介质 |
CN111143359A (zh) * | 2019-12-18 | 2020-05-12 | 口碑(上海)信息技术有限公司 | 查询语句生成方法及装置 |
CN116661756B (zh) * | 2023-07-24 | 2023-10-27 | 浩鲸云计算科技股份有限公司 | 一种基于低代码dsl的对象解析方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106325856A (zh) * | 2016-08-10 | 2017-01-11 | 杭州玳数科技有限公司 | 一种实现Elasticsearch Dsl规则可视化编辑和数据展现的方法与系统 |
CN106528797A (zh) * | 2016-11-10 | 2017-03-22 | 上海轻维软件有限公司 | 基于Elasticsearch的DSL查询方法 |
CN106934062A (zh) * | 2017-03-28 | 2017-07-07 | 广东工业大学 | 一种查询elasticsearch的实现方法及系统 |
-
2017
- 2017-07-20 CN CN201710597904.0A patent/CN107368578B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106325856A (zh) * | 2016-08-10 | 2017-01-11 | 杭州玳数科技有限公司 | 一种实现Elasticsearch Dsl规则可视化编辑和数据展现的方法与系统 |
CN106528797A (zh) * | 2016-11-10 | 2017-03-22 | 上海轻维软件有限公司 | 基于Elasticsearch的DSL查询方法 |
CN106934062A (zh) * | 2017-03-28 | 2017-07-07 | 广东工业大学 | 一种查询elasticsearch的实现方法及系统 |
Non-Patent Citations (1)
Title |
---|
Elasticsearch DSL 常用语法介绍;YouMeek;《YouMeek》;20170612;第1.4节 * |
Also Published As
Publication number | Publication date |
---|---|
CN107368578A (zh) | 2017-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107368578B (zh) | 一种快速生成es查询语句的方法及系统 | |
US10311055B2 (en) | Global query hint specification | |
US6941511B1 (en) | High-performance extensible document transformation | |
US20210097089A1 (en) | Knowledge graph building method, electronic apparatus and non-transitory computer readable storage medium | |
EP3702932A1 (en) | Method, apparatus, device and medium for storing and querying data | |
US9141678B2 (en) | Distributed query cache in a database system | |
US8719299B2 (en) | Systems and methods for extraction of concepts for reuse-based schema matching | |
US20150149436A1 (en) | Rewrite Constraints For Database Queries | |
CN109522341B (zh) | 实现基于sql的流式数据处理引擎的方法、装置、设备 | |
WO2018035799A1 (zh) | 数据查询方法、应用和数据库服务器、中间件及系统 | |
US10019473B2 (en) | Accessing an external table in parallel to execute a query | |
CN109145009B (zh) | 一种基于SQL检索ElasticSearch的方法 | |
US10592506B1 (en) | Query hint specification | |
US10243798B2 (en) | Variable SNMP data collection with embedded queries | |
CN108319604B (zh) | 一种hive中大小表关联的优化方法 | |
US20230023290A1 (en) | Method for managing function based on engine, electronic device and medium | |
CN116775712A (zh) | 联表查询方法、装置、电子设备、分布式系统和存储介质 | |
CN112883088A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN107077512B (zh) | 优化视图上的查询的系统和方法 | |
CN113467828A (zh) | 一种异构众核处理器中编程语言转换方法和系统 | |
CN113064914A (zh) | 数据提取方法及装置 | |
CN112988778A (zh) | 一种处理数据库查询脚本的方法和装置 | |
US20150310069A1 (en) | Methods and system to process streaming data | |
CN110209885A (zh) | 一种图查询方法及系统 | |
CN114817315B (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 |