DSL语句生成方法、装置、系统及计算机可读存储介质与流程

文档序号:29356238发布日期:2022-03-23 00:03阅读:269来源:国知局
DSL语句生成方法、装置、系统及计算机可读存储介质与流程
dsl语句生成方法、装置、系统及计算机可读存储介质
技术领域
1.本发明涉及计算机技术领域,尤其涉及一种dsl语句生成方法、装置、系统及计算机可读存储介质。


背景技术:

2.由于elasticsearch(简称es)对海量数据具有很高的查询效率,所有现在有越来越多的业务系统都将es作为数据源之一。由于数据源属于系统的底层架构,es仅提供基于dsl命令的方式对存储的数据进行丰富的查询操作,所以es本身没有提供基于gui的交互方式,所以非专业人员直接查询es数据的门槛较高,即便在大多数业务系统中也都是预先设置固定的查询条件供系统使用者进行数据查询。
3.如今基于海量数据生成报表的需求越来越普遍,而生成报表的查询条件都是动态生成无法预先设置,所以目前市面上相关系统普遍采取前端(用户界面)输入sql语句,后端再将sql解析成dsl方式来实现动态查询功能。但就算采用sql的方式也有一定的使用门槛,因为大多数系统的使用者可能并没有接触过数据库相关知识的培训。
4.因此如何使非专业人员方便、灵活根据查询需求生成dsl查询语句,是本领域技术人员需要解决的问题。


技术实现要素:

5.为解决上述问题,本发明提供一种dsl语句生成方法、装置、系统及计算机可读存储介质,通过根据用户查询需求生成的查询信息,并根据查询信息中的连接符与查询条件构建多叉查询树,遍历解析多叉查询树的所有节点,得到翻译完成的dsl查询语句,以解决现有技术中人如何使非专业人员方便、灵活根据查询需求生成dsl查询语句的问题。
6.为达到上述目的,本发明提供了一种dsl语句生成方法,其特征在于,包括:获取查询信息;其中,所述查询信息中包括连接符及查询条件;以所述连接符为连接节点,所述查询条件为条件节点,构建多叉查询树;其中,所述连接节点为所述多叉查询树中的根节点或父节点,条件节点为所述多叉查询树中的叶子节点;遍历所述多叉查询树中的每个节点,并对每个节点解析后进行拼接,得到dsl语句。
7.进一步可选的,所述遍历所述多叉查询树中的每个节点,并对每个节点解析后进行拼接,得到dsl语句,包括:采用先序遍历算法将所述多叉查询树转化为节点数组;以所述节点数组的尾端节点为初始节点,顺序遍历所述节点数组,根据节点类型对每个节点进行数据解析后存入预设目标栈,直至所述节点数组中的所有节点解析存储完成,得到dsl语句。
8.进一步可选的,所述根据节点类型对每个节点进行数据解析后存入预设目标栈,包括:若当前节点为条件节点,则将当前节点的内容解析为dsl查询条件输入所述预设目标栈;若当前节点为连接节点,则取出所述预设目标栈中的所有dsl查询条件与所述当前节点组合后再存入所述预设目标栈。
9.进一步可选的,所述获取查询信息包括:识别连接符输入位置及对应的查询条件输入位置;提取所述连接符输入位置的连接符及所述查询条件输入位置的查询条件。
10.另一方面,本发明还提供一种dsl语句生成装置,包括:数据获取模块,用于获取查询信息;其中,所述查询信息中包括连接符及查询条件;多叉查询树生成模块,用于以所述连接符为连接节点,所述查询条件为条件节点,构建多叉查询树;其中,所述连接节点为所述多叉查询树中的根节点或父节点,条件节点为所述多叉查询树中的叶子节点;拼接模块,用于遍历所述多叉查询树中的每个节点,并对每个节点解析后进行拼接,得到dsl语句。
11.进一步可选的,所述拼接模块包括:节点数组生成子模块,用于采用先序遍历算法将所述多叉查询树转化为节点数组;节点解析子模块,用于以所述节点数组的尾端节点为初始节点,顺序遍历所述节点数组,根据节点类型对每个节点进行数据解析后存入预设目标栈,直至所述节点数组中的所有节点解析存储完成,得到dsl语句。
12.进一步可选的,所述节点解析子模块包括:第一解析单元,用于若当前节点为条件节点,则将当前节点的内容解析为dsl查询条件输入所述预设目标栈;第二解析单元,用于若当前节点为连接节点,则取出所述预设目标栈中的所有dsl查询条件与所述当前节点组合后再存入所述预设目标栈。
13.进一步可选的,所述数据获取模块包括:位置识别子模块,用于识别连接符输入位置及对应的查询条件输入位置;数据提取子模块,用于提取所述连接符输入位置的连接符及所述查询条件输入位置的查询条件。
14.另一方面,本发明还提供一种dsl语句生成系统,包括上述的dsl语句生成装置。
15.另一方面,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器处理时执行上述的dsl语句生成方法。
16.上述技术方案具有如下有益效果:当非专业人员输入查询信息时,本发明通过将查询信息转化为条件节点及连接节点,进而将查询信息转化为多叉查询树,通过多叉树进行遍历解析从而翻译成dsl语句,让完全不了解dsl甚至不连接sql语句的用户仅通过输入查询信息即可生成较为复杂的查询语句,方便非专业人员的使用;遍历多叉树时先将多叉树转化为节点数组,通过对节点数组中的节点进行顺序解析后入栈,使多叉树中的节点经过逻辑组装后形成完整查询语句,提高查询语句的生成速度。
附图说明
17.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
18.图1是本发明实施例提供的dsl语句生成方法的流程图;
19.图2是本发明实施例提供的多叉查询树的结构示意图;
20.图3是本发明实施例提供的多叉查询树节点遍历方法的流程图;
21.图4是本发明实施例提供的节点数组的结构示意图;
22.图5是本发明实施例提供的节点解析方法的流程图;
23.图6是本发明实施例提供的获取查询信息方法的流程图;
24.图7是本发明实施例提供的dsl语句生成装置的结构示意图;
25.图8是本发明实施例提供的多叉树生成模块的结构示意图;
26.图9是本发明实施例提供的节点解析子模块的结构示意图;
27.图10是本发明实施例提供的数据获取模块的结构示意图。
28.附图标记:100-数据获取模块1001-位置识别子模块1002-数据提取子模块200-多叉查询树生成模块300-拼接模块3001-节点数组生成子模块3002-节点解析子模块30021-第一解析单元30022-第二解析单元
具体实施方式
29.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
30.为解决上述如何使非专业人员根据查询需求方便、快速的生成对应的dsl语句的问题,本发明提供了一种dsl语句生成方法,图1是本发明实施例提供的dsl语句生成方法的流程图,如图1所示,该方法包括:
31.s101、获取查询信息;其中,查询信息中包括连接符及查询条件;
32.用户根据自己的需求输入查询信息,查询信息中包括连接符与查询条件。
33.连接符为逻辑连接符,用于连接查询条件,即and、or。
34.查询条件即为用户的查询需求,例如,url地址等于http://www.baidu.com,访问端口包含8080,8088,9090,创建时间介于2021-12-29,2022-01-24。
35.查询信息为连接符与查询条件组合后的信息,如某条查询信息为:url地址等于http://www.baidu.com且(and)访问端口包含8080,8088,9090且(and)创建时间介于2021-12-29,2022-01-24。
36.s102、以连接符为连接节点,查询条件为条件节点,构建多叉查询树;其中,连接节点为多叉查询树中的根节点或父节点,条件节点为多叉查询树中的叶子节点;
37.以上述查询信息为基础建立相应的多叉查询树,多叉查询树由两种关键节点对象组成,即连接节点与条件节点。连接节点:总为根节点或父节点,起到分层或逻辑连接查询条件的作用;条件节点:总为叶子节点,是组成查询语句的核心。
38.图2是本发明实施例提供的多叉查询树的结构示意图,图2中,root、parenta、parentc均为连接节点;leafa、leafb、leafc、leafd、leafe、leaff、leafg均为条件节点。
39.s103、遍历多叉查询树中的每个节点,并对每个节点解析后进行拼接,得到dsl语句。
40.对生成的多叉查询树进行遍历,顺序对每个节点进行解析,得到dsl查询条件,将这些dsl查询条件进行拼接,得到dsl语句。使用该dsl语句在海量的es数据中进行查询,得到用户所需数据。
41.作为一种可选的实施方式,图3是本发明实施例提供的多叉查询树节点遍历方法的流程图,如图3所示,遍历多叉查询树中的每个节点,并对每个节点解析后进行拼接,得到dsl语句,包括:
42.s1031、采用先序遍历算法将多叉查询树转化为节点数组;
43.s1032、以节点数组的尾端节点为初始节点,顺序遍历节点数组,根据节点类型对每个节点进行数据解析后存入预设目标栈,直至节点数组中的所有节点解析存储完成,得到dsl语句。
44.前端根据用户操作生成查询树后,将数据通过api接口发送到后端,后端处理单元通过解析其将属性数据翻译成最终的dsl语句。解析器内部主要做两项工作:1.将单颗查询树拆分成有序节点数组;2.将节点数据编排成完整的dsl语句。
45.因为最终的处理单元是查询节点,所以需要将一棵完整的查询树按照特定的遍历算法生成节点数组。在本实施例中,采用树的先序遍历算法,将多叉查询树转变成节点数组。图4是本发明实施例提供的节点数组的结构示意图,图2中的多叉查询树经转化后得到如图4所示的节点数组。
46.将查询树加工成节点数组之后,就可以进入节点数据解析步骤,以节点数组最末端的节点开始顺序遍历节点数组。如图4所示,本实施例从节点数组的最右端开始顺序遍历该节点数组。遍历到任一节点时,根据节点类型对每个节点进行解析,并将解析后的数据存入预设目标栈中,当所有节点解析完成后,得到完整的dsl语句。
47.其中,预设目标栈预先设立,用于存储中间解析结果,该预设目标栈在初始状态下为空。
48.作为一种可选的实施方式,图5是本发明实施例提供的节点解析方法的流程图,如图5所示,根据节点类型对每个节点进行数据解析后存入预设目标栈,包括:
49.s10321、若当前节点为条件节点,则将当前节点的内容解析为dsl查询条件输入预设目标栈;
50.如果是当前节点为条件节点,则将当前节点封装成query对象入栈。
51.s10322、若当前节点为连接节点,则取出预设目标栈中的所有dsl查询条件与当前节点组合后再存入预设目标栈。
52.如果当前节点是连接节点,则取出栈中全部query对象与该连接节点组合。具体的,如果连接节点为“and”,则将预设目标栈中存储的所有query对象使用“and”合并成一个复合query对象再入栈,如果是“or”同理。如此,在节点数组遍历完成后栈中只剩一个复合query对象,取出栈中的元素,并将该复合query对象转译为结果dsl语句。
53.作为一种可选的实施方式,采取elasticsearch-rest-high-level-client组件将节点数据封装为query对象,及将query对象转译为结果dsl语句。
54.作为一种可选的实施方式,图6是本发明实施例提供的获取查询信息方法的流程图,如图6所示,获取查询信息包括:
55.s1011、识别连接符输入位置及对应的查询条件输入位置;
56.s1012、提取连接符输入位置的连接符及查询条件输入位置的查询条件。
57.作为一种可选的实施方式,用户输入界面为表格形式,每一行包括查询类型输入框,条件符号输入框,查询条件输入框。以查询条件url地址等于http://www.baidu.com为例,“url地址”为查询类型,“等于”为条件符号,“http://www.baidu.com”为查询条件。用户在输入时在查询类型输入框输入“url地址”,条件符号输入框输入“等于”,查询条件输入框输入“http://www.baidu.com”。不同行之间还包括连接符输入框,用于输入连接符。本实施
例中用户根据查询需求填写查询信息后,识别该表格形式的查询信息中连接符输入位置及查询条件输入位置,并从这些位置中提取对应的信息,后续按照逻辑转换为多叉查询树。
58.作为一种可选的实施方式,用户输入界面为横向单根节点多叉树状结构,横向单根节点多叉树状结构中各项输入框的位置与需转化的多叉查询树各节点的位置对应,用户可在该界面中随意增删节点、填写内容,即相当于直接增删多叉查询树中的各项节点、改变各项节点内容。本实施例中用户根据查询需求填写查询信息后,将树状结构的查询信息中提取连接符输入位置及查询条件输入位置,并从这些位置中提取对应的信息,后续根据对应关系转化为多叉查询树。
59.本发明实施例还提供一种dsl语句生成装置,图7是本发明实施例提供的dsl语句生成装置的结构示意图,如图7所示,该装置包括:
60.数据获取模块100,用于获取查询信息;其中,查询信息中包括连接符及查询条件;
61.用户根据自己的需求输入查询信息,查询信息中包括连接符与查询条件。
62.连接符为逻辑连接符,用于连接查询条件,即and、or。
63.查询条件即为用户的查询需求,例如,url地址等于http://www.baidu.com,访问端口包含8080,8088,9090,创建时间介于2021-12-29,2022-01-24。
64.查询信息为连接符与查询条件组合后的信息,如某条查询信息为:url地址等于http://www.baidu.com且(and)访问端口包含8080,8088,9090且(and)创建时间介于2021-12-29,2022-01-24。
65.多叉查询树生成模块200,用于以连接符为连接节点,查询条件为条件节点,构建多叉查询树;其中,连接节点为多叉查询树中的根节点或父节点,条件节点为多叉查询树中的叶子节点;
66.以上述查询信息为基础建立相应的多叉查询树,多叉查询树由两种关键节点对象组成,即连接节点与条件节点。连接节点:总为根节点或父节点,起到分层或逻辑连接查询条件的作用;条件节点:总为叶子节点,是组成查询语句的核心。
67.图2中,root、parenta、parentc均为连接节点;leafa、leafb、leafc、leafd、leafe、leaff、leafg均为条件节点。
68.拼接模块300,用于遍历多叉查询树中的每个节点,并对每个节点解析后进行拼接,得到dsl语句。
69.对生成的多叉查询树进行遍历,顺序对每个节点进行解析,得到dsl查询条件,将这些dsl查询条件进行拼接,得到dsl语句。使用该dsl语句在海量的es数据中进行查询,得到用户所需数据。
70.作为一种可选的实施方式,图8是本发明实施例提供的拼接模块的结构示意图,如图8所示,拼接模块300包括:
71.节点数组生成子模块3001,用于采用先序遍历算法将多叉查询树转化为节点数组;
72.节点解析子模块3002,用于以节点数组的尾端节点为初始节点,顺序遍历节点数组,根据节点类型对每个节点进行数据解析后存入预设目标栈,直至节点数组中的所有节点解析存储完成,得到dsl语句。
73.前端根据用户操作生成查询树后,将数据通过api接口发送到后端,后端处理单元
通过解析其将属性数据翻译成最终的dsl语句。解析器内部主要做两项工作:1.将单颗查询树拆分成有序节点数组;2.将节点数据编排成完整的dsl语句。
74.因为最终的处理单元是查询节点,所以需要将一棵完整的查询树按照特定的遍历算法生成节点数组。在本实施例中,采用树的先序遍历算法,将多叉查询树转变成节点数组。图2中的多叉查询树经转化后得到如图4所示的节点数组。
75.将查询树加工成节点数组之后,就可以进入节点数据解析步骤,以节点数组最末端的节点开始顺序遍历节点数组。如图4所示,本实施例从节点数组的最右端开始顺序遍历该节点数组。遍历到任一节点时,根据节点类型对每个节点进行解析,并将解析后的数据存入预设目标栈中,当所有节点解析完成后,得到完整的dsl语句。
76.其中,预设目标栈预先设立,用于存储中间解析结果,该预设目标栈在初始状态下为空。
77.作为一种可选的实施方式,图9是本发明实施例提供的节点解析子模块的结构示意图,如图9所示,节点解析子模块3002包括:
78.第一解析单元30021,用于若当前节点为条件节点,则将当前节点的内容解析为dsl查询条件输入预设目标栈;
79.如果是当前节点为条件节点,则将当前节点封装成query对象入栈。
80.第二解析单元30022,用于若当前节点为连接节点,则取出预设目标栈中的所有dsl查询条件与当前节点组合后再存入预设目标栈。
81.如果当前节点是连接节点,则取出栈中全部query对象与该连接节点组合。具体的,如果连接节点为“and”,则将预设目标栈中存储的所有query对象使用“and”合并成一个复合query对象再入栈,如果是“or”同理。如此,在节点数组遍历完成后栈中只剩一个复合query对象,取出栈中的元素,并将该复合query对象转译为结果dsl语句。
82.作为一种可选的实施方式,采取elasticsearch-rest-high-level-client组件将节点数据封装为query对象,及将query对象转译为结果dsl语句。
83.作为一种可选的实施方式,用户输入界面为表格形式,每一行包括查询类型输入框,条件符号输入框,查询条件输入框。以查询条件url地址等于http://www.baidu.com为例,“url地址”为查询类型,“等于”为条件符号,“http://www.baidu.com”为查询条件。用户在输入时在查询类型输入框输入“url地址”,条件符号输入框输入“等于”,查询条件输入框输入“http://www.baidu.com”。不同行之间还包括连接符输入框,用于输入连接符。本实施例中用户根据查询需求填写查询信息后,识别该表格形式的查询信息中连接符输入位置及查询条件输入位置,并从这些位置中提取对应的信息,后续按照逻辑转换为多叉查询树。
84.作为一种可选的实施方式,用户输入界面为横向单根节点多叉树状结构,横向单根节点多叉树状结构中各项输入框的位置与需转化的多叉查询树各节点的位置对应,用户可在该界面中随意增删节点、填写内容,即相当于直接增删多叉查询树中的各项节点、改变各项节点内容。本实施例中用户根据查询需求填写查询信息后,将树状结构的查询信息中提取连接符输入位置及查询条件输入位置,并从这些位置中提取对应的信息,后续根据对应关系转化为多叉查询树。
85.作为一种可选的实施方式,图10是本发明实施例提供的数据获取模块的结构示意图,如图10所示,数据获取模块100包括:
86.位置识别子模块1001,用于识别连接符输入位置及对应的查询条件输入位置;
87.数据提取子模块1002,用于提取连接符输入位置的连接符及查询条件输入位置的查询条件。
88.本发明实施例还提供一种dsl语句生成系统,包括上述的dsl语句生成装置。
89.本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,程序被处理器处理时执行上述的dsl语句生成方法。
90.上述存储介质中存储有上述软件,该存储介质包括但不限于:光盘、软盘、硬盘、可擦写存储器等。
91.上述技术方案具有如下有益效果:当非专业人员输入查询信息时,本发明通过将查询信息转化为条件节点及连接节点,进而将查询信息转化为多叉查询树,通过多叉树进行遍历解析从而翻译成dsl语句,让完全不了解dsl甚至不连接sql语句的用户仅通过输入查询信息即可生成较为复杂的查询语句,方便非专业人员的使用;遍历多叉树时先将多叉树转化为节点数组,通过对节点数组中的节点进行顺序解析后入栈,使多叉树中的节点经过逻辑组装后形成完整查询语句,提高查询语句的生成速度。
92.以上发明的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上内容仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1