技术新讯 > 计算推算,计数设备的制造及其应用技术 > 一种基于ElasticSearch的多条件查询方法与流程  >  正文

一种基于ElasticSearch的多条件查询方法与流程

  • 国知局
  • 2024-09-11 14:45:41

本说明书实施例涉及计算机,尤其是一种基于elasticsearch的多条件查询方法。

背景技术:

1、elasticsearch(简称es)是一种基于apache lucene的开源、分布式、可扩展、实时的数据搜索和分析引擎。它使用“文档收集”数据模型来组织数据,并提供实时搜索和分析功能。es可以看作一个分布式文档数据库,每个字段都是被索引的数据并且可被搜索。当用户输入字段查询时,它会根据事先建立的索引进行查找,并返回查找到的结果。es可以为用户提供固定的查询模板,用户只能通过已有的多条件查询模板进行特定查询,然而日常开发中可能需要频繁地使用一些类似的查询,为了减少重复的工作,可以将这些类似的查询写成模板,在后续只需要传递不同的参数来调用模板则可以获取结果。

2、在es中,使用组合条件查询是其作为搜索引擎检索数据的一个强大之处,es的查询语法提供了基本的增删改查功能,其组合条件的语法叫bool,通过在bool里面拼接es特定的语法可以做到大部分场景下多条件的拼接查询。但是这种拼接的查询模板并不能很好的满足用户想要自定义组装查询条件的场景,当需要在原有的查询条件上增加几个条件或对原有条件进行变更,或查询需求很多很复杂时,需要针对查询条件以及条件之间的逻辑关系重新写入查询系统以适应需求变化,这就导致一个需求就要写一个对应的es的javaapi查询方法,从而使得对于多条件查询效率低的问题。因此,亟需一种多条件查询方法能够解决现有技术中利用es实现多条件搜索效率低的问题。

技术实现思路

1、针对现有技术的上述问题,本说明书实施例的目的在于,提供一种基于elasticsearch的多条件查询方法,以解决现有技术中利用es实现多条件搜索效率低的问题。

2、为了解决上述技术问题,本说明书实施例的具体技术方案如下:

3、一方面,本说明书实施例提供一种基于elasticsearch的多条件查询方法,所述方法包括:

4、接收用户自定义查询条件;

5、将所述自定义查询条件转换为json格式的查询语句,其中所述查询语句包含多层逻辑嵌套关系;

6、根据约定字段对所述查询语句由外至内进行解析,得到每层查询语句的逻辑标识及对应的子条件;

7、递归调用预先定义的逻辑判定函数,以使所述逻辑判定函数根据每层查询语句的逻辑标识对每层查询语句进行逻辑判定,得到每层查询语句的搜索查询匹配模式;

8、将所述每层查询语句的搜索查询匹配模式及对应的子条件输入elasticsearch搜索引擎中进行查询,返回查询结果至所述用户。

9、进一步的,所述将所述自定义查询条件转换为json格式的查询语句,包括:

10、对所述自定义查询条件进行解析,根据解析内容将所述自定义查询条件转换为预先定义的数据结构,其中所述数据结构包含字段名、操作符、字段值及逻辑标识;

11、根据所述数据结构构建查询条件树;

12、遍历所述查询条件树,利用json模块将所述查询条件树转换为json语句。

13、进一步的,所述逻辑标识包括and标识和or标识,所述每层查询语句的搜索查询匹配模式包括:

14、若所述逻辑标识为and,则所述每层查询语句的搜索查询匹配模式包括全部字段匹配模式、部分字段匹配模式及时间范围内匹配模式;

15、若所述逻辑标识为or,则所述每层查询语句的搜索查询匹配模式为全部字段匹配模式、部分字段匹配模式或时间范围内匹配模式中的任一种搜索查询匹配模式。

16、进一步的,所述根据约定字段对所述查询语句由外至内进行解析前,还包括:

17、定义查询对象结构,所述查询对象结构包括对象类型及对象属性;

18、从所述查询条件中提取关键信息;

19、利用语义信息提取模型对所述关键信息进行语义信息提取,得到语义表示;

20、将所述语义表示映射到所述查询对象结构中,得到映射信息;

21、根据所述映射信息构建查询对象。

22、进一步的,所述约定字段包括and字段和or字段,所述根据约定字段对所述查询语句由外至内进行解析,得到每层查询语句的逻辑标识及对应的子条件,包括:

23、确定所述查询语句的逻辑结构;

24、从最外层查询语句开始解析,将所述最外层查询语句包含的约定字段确定为逻辑标识,得到最外层查询语句包含的子条件;

25、判断所述最外层查询语句包含的子条件中是否包含约定字段,若是,则将对应的约定字段确定为次外层查询语句的逻辑标识;

26、重复如上步骤,直至当前层查询语句包含的子条件中不包含约定字段,得到每层查询语句的逻辑标识及对应的子条件。

27、进一步的,所述递归调用预先定义的逻辑判定函数,以使所述逻辑判定函数根据每层查询语句的逻辑标识对每层查询语句进行逻辑判定,包括:

28、判断所述每层查询语句中的逻辑标识是否为空,若是,则跳出递归;

29、若否,则根据所述逻辑标识确定所述查询语句的搜索查询匹配模式。

30、另一方面,本说明书实施例提供了一种基于elasticsearch的多条件查询装置,所述装置包括:

31、接收模块,用于接收用户自定义查询条件;

32、转换模块,用于将所述自定义查询条件转换为json格式的查询语句,其中所述查询语句包含多层逻辑嵌套关系;

33、第一解析模块,用于根据约定字段对所述查询语句由外至内进行解析,得到每层查询语句的逻辑标识及对应的子条件;

34、第二解析模块,用于递归调用预先定义的逻辑判定函数,以使所述逻辑判定函数根据每层查询语句的逻辑标识对每层查询语句进行逻辑判定,得到每层查询语句的搜索查询匹配模式;

35、查询模块,用于将所述每层查询语句的搜索查询匹配模式及对应的子条件输入elasticsearch搜索引擎中进行查询,返回查询结果至所述用户。

36、又一方面,本说明书实施例还提供了一种计算机设备,包括存储器、处理器、以及存储在所述存储器上的计算机程序,所述计算机程序被所述处理器运行时,执行上述任意一项所述方法的指令。

37、又一方面,本说明书实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被计算机设备的处理器运行时,执行上述任意一项所述方法的指令。

38、又一方面,本说明书实施例还提供了一种计算机程序产品,所述计算机程序产品被计算机设备的处理器运行时,执行上述任意一项所述方法的指令。

39、本说明书的一些实施例提供的一个或者多个技术方案,至少具有如下的技术效果:

40、本说明书首先将用户自定义的包含多层逻辑嵌套关系的查询条件转换为json格式的查询语句,其次根据约定字段对查询语句由外至内进行解析,得到每层查询语句的逻辑标识及对应的子条件,然后递归调用预先定义的逻辑判定函数,以使逻辑判定函数根据每层查询语句的逻辑标识对每层查询语句进行逻辑判定,得到每层查询语句的搜索查询匹配模式,最后将每层查询语句的搜索查询匹配模式及对应的子条件输入elasticsearch搜索引擎中进行查询,返回查询结果至用户。由此,可将复杂的包含多层逻辑嵌套关系的查询条件转换为符合elasticsearch搜索引擎的条件,无需修改代码就可实现任意条件多种逻辑组合查询,查询效率高。

41、上述说明仅是本说明书的一些实施例技术方案的概述,为了能够更清楚了解本说明书的一些实施例的技术手段,而可依照说明书的内容予以实施,并且为让本说明书实施例的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。

本文地址:https://www.jishuxx.com/zhuanli/20240911/292053.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。