CN107368578B - 一种快速生成es查询语句的方法及系统 - Google Patents

一种快速生成es查询语句的方法及系统 Download PDF

Info

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
Application number
CN201710597904.0A
Other languages
English (en)
Other versions
CN107368578A (zh
Inventor
于波
王可鑫
段文良
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong Heetian Information Technology Co ltd
Original Assignee
Shandong Heetian Information Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shandong Heetian Information Technology Co ltd filed Critical Shandong Heetian Information Technology Co ltd
Priority to CN201710597904.0A priority Critical patent/CN107368578B/zh
Publication of CN107368578A publication Critical patent/CN107368578A/zh
Application granted granted Critical
Publication of CN107368578B publication Critical patent/CN107368578B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query 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的实时性能很好,能够胜任分布式实时搜索的要求。
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
Figure BDA0001356089420000071
如表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
Figure BDA0001356089420000081
Figure BDA0001356089420000091
如表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的程序为:
Figure BDA0001356089420000101
在本实施例,所述步骤(3)中,如表3所示,新建的请求对象SearchRequest包括:DSL查询体query、类型from和查询条数size;
其中,DSL查询体query的字段类型为query类型,类型from的字段类型为integer类型,查询条数size的字段类型为integer类型,查询条数size的值可指定,若未指定其默认值为10。
表3
Figure BDA0001356089420000111
在本实施例中,所述步骤(4)中,根据步骤(2)得到的查询参数对象进行解析设置,生成包含叶查询子句和/或复合查询子句的查询对象的具体步骤为:
(4-1)如表4所示,新建查询体query对象,设置多值域关键词查询,将新建的查询体query对象和步骤(2)中得到的查询参数对象赋值到多值域关键词查询中,并返回查询体query对象;并设置过滤器查询,将新建的查询体query对象和步骤(2)中得到的查询参数对象赋值到过滤器查询中,并返回查询体query对象;
(4-2)将查询体query对象赋值到请求对象SearchRequest中;
表4
Figure BDA0001356089420000112
所述步骤(4-1)中,新建的查询体query对象包括:多值域关键词查询和过滤器查询;
设置多值域关键词查询:判断是否存在查询语句,若存在,如表5所示,新建多值域关键词查询,添加查询内容以及查询字段数组并返回查询体query对象;
表5
Figure BDA0001356089420000113
Figure BDA0001356089420000121
设置过滤器查询:根据步骤(2)得到的查询参数对象中的过滤器对象进行循环,在循环中根据bool查询类型boolType的取值建立bool查询下的must查询、filter查询和should查询,根据过滤查询类型type的取值建立相应的查询条件,并返回查询体query对象。其中查询条件Condition:如表6所示,
表6
Figure BDA0001356089420000122
在步骤(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。
CN201710597904.0A 2017-07-20 2017-07-20 一种快速生成es查询语句的方法及系统 Active CN107368578B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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的实现方法及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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