一种基于ES实现复杂条件查询的方法与流程

文档序号:35954659发布日期:2023-11-08 16:04阅读:84来源:国知局
一种基于ES实现复杂条件查询的方法与流程

本发明涉及计算机,尤其涉及一种基于es实现复杂条件查询的方法。


背景技术:

1、随着互联网的快速发展与长年积累,整个互联网的数据量越来越大。对于一般情况数据量不大的场景,很多公司倾向于使用数据库去存储和查询数据,而传统数据库在大量数据读取时往往会遇到查询速度缓慢、运维成本高的问题。所以从海量数据中快速精确检索到用户所需要的信息逐渐成为搜索引擎需要面临的挑战。elasticsearch(下文简称es)作为一个强大的分布式的全文搜索引擎能够解决这一问题。

2、es的核心功能是全文搜索和实时聚合。es将文档存储在分片和副本中,可以支持pb级别的数据存储和处理。同时,es还支持数据自动分片和负载均衡等分布式特性,可以保证数据的高可用性和可扩展性。

3、es内置了各种查询和聚合方法,包括文本搜索、过滤器、统计、分组、对数据做实时可视化等等。es支持很多查询方式,其中一种方法叫做"query dsl"(查询领域特定语言),它是一种基于json格式的查询语言,用于描述和执行各种搜索、过滤和聚合操作。querydsl提供了丰富的查询和聚合方式,可以帮助用户发挥elasticsearch的强大搜索和分析能力,实现复杂的查询和聚合需求。

4、query dsl的基本结构如下:

5、

6、其中,"query"表示需要执行的查询类型,可以是各种可用的查询方式,比如term查询、match查询、range查询、bool查询等等。查询条件是包含在"query"标签下的json对象中的,查询条件的具体语法根据不同的查询类型而不同。

7、在实际开发应用中,用户通常在前端应用或页面上进行条件的选择,后端服务基于用户的输入条件生成json查询语句调用es服务进行查询返回结果到前端页面。简单的查询语句可以较容易地构建,而在业务中往往涉及到的且或关系与多层嵌套的查询语句难以通过通用的方法构建出json语句交予es查询。


技术实现思路

1、为了解决以上技术问题,本发明提供了一种基于es实现复杂条件查询的方法。可以使用户在前端进行可视化的条件选择,在后端自动生成查询json语句进行复杂查询。

2、本发明的技术方案是:

3、一种基于es实现复杂条件查询的方法,

4、通过递归的方式将结构化数据转换为json查询语句,使用户在前端进行可视化的条件选择,在后端自动生成查询json语句进行复杂查询。

5、进一步的,

6、将复杂查询划分层级并视同一层级的条件为同级的条件体,划分层级的标准为从左至右每次发生逻辑关系变化时进入下一层级,每个组合查询内部为一个下级层级的条件。同级的条件体可以是单个条件、组合条件。

7、构建一个组件α,组件α为一个层级的条件选择,用于生成一个对象obj1,将这类对象定义为关系object,关系object中包含逻辑关系和条件集合list1,用户在组件α中必须选择该层级的逻辑关系:&或者i;“&”表示“且”关系,“|”表示“或关系”。

8、确定层级内的逻辑关系后用户可以任意添加该层级的查询条件,查询条件分为两种类型:单个条件与组合条件。

9、选择单个条件后生成一个对象并添加到list1中,这类对象定义为条件object,条件object包含一个单个条件的查询所需内容;

10、选择组合条件后递归生成一个新的组件α,用于生成新的关系object:obj2,其生成逻辑与obj1相同,并将obj2加入到list1中,以此类推生成复合查询结构。

11、再进一步的,

12、前端将查询条件结构化生成后,后端需要进行解析并生成json查询语句交由es进行查询。

13、后端获取到obj1后,获取逻辑关系relation1与条件集合list,构建基本语句。

14、执行如下步骤:

15、1)根据relation构建基本语句,如果关系为“且”则构建must的bool语句,“或”则构建should的bool语句:

16、2)循环条件集合list,判断每个对象;如果对象其中有逻辑关系relation,则该对象为关系object,反之为条件object;

17、如果当前循环对象为条件object,则直接添加条件json到bool语句中;

18、如果当前循环对象为关系object,则在当前位置递归执行步骤1),入参为新的关系object。

19、本发明的有益效果是

20、本发明可以使用户在前端进行可视化的条件选择,系统在后端自动生成查询json语句进行复杂查询。

21、本发明通过递归的方式能够根据用户查询信息的选择自动化地构建出查询的json语句,适用于需要多条件复杂查询的业务场景。



技术特征:

1.一种基于es实现复杂条件查询的方法,其特征在于,

2.根据权利要求1所述的方法,其特征在于,

3.根据权利要求1所述的方法,其特征在于,

4.根据权利要求2所述的方法,其特征在于,

5.根据权利要求4所述的方法,其特征在于,

6.根据权利要求5所述的方法,其特征在于,

7.根据权利要求6所述的方法,其特征在于,

8.根据权利要求7所述的方法,其特征在于,

9.根据权利要求8所述的方法,其特征在于,


技术总结
本发明提供一种基于ES实现复杂条件查询的方法,属于计算机技术领域,本发明通过递归实现一种前端组件构造出复杂查询的结构化数据,在后端通过递归将结构化数据转换为ES能够识别的查询JSON。实现了基于ES的复杂查询。

技术研发人员:曲铭,张安举,崔乐乐
受保护的技术使用者:天元大数据信用管理有限公司
技术研发日:
技术公布日:2024/1/16
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1