公开/公告号CN113254500A
专利类型发明专利
公开/公告日2021-08-13
原文格式PDF
申请/专利权人 北京京东拓先科技有限公司;
申请/专利号CN202110607631.X
发明设计人 李彬;
申请日2021-06-01
分类号G06F16/2458(20190101);G06F16/2453(20190101);G06F16/27(20190101);
代理机构11018 北京德琦知识产权代理有限公司;
代理人谢安昆;宋志强
地址 100176 北京市北京经济技术开发区科创十一街18号院1号楼7层701室
入库时间 2023-06-19 12:13:22
技术领域
本发明涉及计算机技术领域,特别涉及一种分页查询方法、装置、电子设备及存储介质。
背景技术
分布式搜索引擎,如Elasticsearch(简称ES)支持分页查询,现有ES分页查询主要有两种方式,一种是from+size方式、另一种是scroll方式,其中,
from+size方式中,from定义了目标数据的起始位置,size定义了分页大小。这种分页查询方式只适用于少量数据查询,例如目标数据为第0至10000条内的数据时,查询效率较高,当数据量过高,如超过10000条以上时,便会出现查询效率严重下降的问题。
scroll方式,通过scroll滚动,即每次查询后返回一个scroll_id,根据该scroll_id进行下一页的查询,从而实现深分页的数据查询。这种分页查询方式需要逐页获取数据,不适用有跳页访问数据的情景。
发明内容
有鉴于此,本发明的目的在于提供了一种分页查询方法、装置、电子设备及存储介质,能够在保证查询性能的情况下实现深分页查询且能够支持跳页访问。
为了达到上述目的,本发明提供了如下技术方案:
一种分页查询方法,包括:
预先配置筛选条件,所述筛选条件包括分布式搜索引擎中的各指定信息字段;
监控到新增信息时,根据该新增信息中对应于分布式搜索引擎中各指定信息字段的值确定第一关键值,将该新增信息存储到分布式搜索引擎并将分布式搜索引擎返回的该新增信息对应的文档标识添加到第一关键值对应的取值集合中;
接收到用户的分页查询请求时,根据所述分页查询请求携带的对应于分布式搜索引擎中各指定信息字段的值确定第二关键值,查找与第二关键值匹配的第一关键值,根据所述分页查询请求中携带的分页参数和查找到的第一关键值对应的取值集合选出所述分页查询请求的目标文档标识,根据所述目标文档标识从分布式搜索引擎中获取所述分页查询请求的目标信息。
一种分页查询装置,包括:
配置单元,用于预先配置筛选条件,所述筛选条件包括分布式搜索引擎中的各指定信息字段;
监控单元,用于监控到新增信息时,根据该新增信息中对应于分布式搜索引擎中各指定信息字段的值确定第一关键值,将该新增信息存储到分布式搜索引擎并将分布式搜索引擎返回的该新增信息对应的文档标识添加到第一关键值对应的取值集合中;
查询单元,用于接收到用户的分页查询请求时,根据所述分页查询请求携带的对应于分布式搜索引擎中各指定信息字段的值确定第二关键值,查找与第二关键值匹配的第一关键值,根据所述分页查询请求中携带的分页参数和查找到的第一关键值对应的取值集合选出所述分页查询请求的目标文档标识,根据所述目标文档标识从分布式搜索引擎中获取所述分页查询请求的目标信息。
一种电子设备,包括:至少一个处理器,以及与所述至少一个处理器通过总线相连的存储器;所述存储器存储有可被所述至少一个处理器执行的一个或多个计算机程序;所述至少一个处理器执行所述一个或多个计算机程序时实现上述分页查询方法中的步骤。
一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个计算机程序,所述一个或多个计算机程序被处理器执行时实现上述分页查询方法中的步骤。
由上面的技术方案可知,本发明中,预先配置筛选条件,筛选条件中包括分布式搜索引擎中各指定信息字段;对需要存储到分布式搜索引擎的新增信息进行监控,并在监控到新增信息时,根据筛选条件生成新增信息对应的第一关键字,将新增信息存储到分布式搜索引擎并将分布式搜索引擎返回的该新增信息对应的文档标识添加到第一关键字对应的文档标识集合中,这样,当接收到分页查询请求时,可以根据分页查询请求携带的各指定信息字段的值确定第二关键字,然后根据分页查询请求携带的分页参数和与第二关键字匹配的第一关键字对应的取值集合确定目标文档标识,并据此从分布式搜索引擎中获取分页查询请求的目标信息。本发明不是直接在分布式搜索引擎中进行分页查询,而是先利用第一关键字及其取值集合确定分页查询请求的目标文档标识,然后再到分布式搜索引擎中读取目标文档标识对应的目标信息,能够在保证查询性能的情况下实现深分页查询且能够支持跳页访问。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一分页查询方法流程图;
图2是本发明实施例二分页查询方法流程图;
图3是本发明实施例三分页查询方法流程图;
图4是本发明实施例四分页查询方法流程图;
图5是本发明实施例五分页查询方法流程图;
图6是本发明实施例六分页查询方法流程图;
图7是本发明实施例七分页查询方法流程图;
图8是本发明实施例八分页查询方法流程图;
图9是本发明实施例分页查询装置的结构示意图;
图10是本发明实施例电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下以ES为例,对本发明提供的分布式搜索引擎的分页查询方法进行详细说明:
参见图1,图1是本发明实施例一分页查询方法流程图,如图1所示,该方法主要包括以下步骤:
步骤101、预先配置筛选条件,所述筛选条件包括ES中的各指定信息字段;
步骤102、监控到新增信息时,根据该新增信息中对应于ES中各指定信息字段的值确定第一关键值,将该新增信息存储到ES并将ES返回的该新增信息对应的文档标识添加到第一关键值对应的取值集合中;
步骤103、接收到用户的分页查询请求时,根据所述分页查询请求携带的对应于ES中各指定信息字段的值确定第二关键值,查找与第二关键值匹配的第一关键值,根据所述分页查询请求中携带的分页参数和查找到的第一关键值对应的取值集合选出所述分页查询请求的目标文档标识,根据所述目标文档标识从ES中获取所述分页查询请求的目标信息。
从图1所示方法可以看出,本实施例中,预先配置筛选条件,筛选条件中包括ES中的各指定信息字段;对需要存储到ES的新增信息进行监控,并在监控到新增信息时,根据筛选条件生成新增信息对应的第一关键字,将新增信息存储到ES并将ES返回的该新增信息对应的文档标识添加到第一关键字对应的文档标识集合中,这样,当接收到分页查询请求时,可以根据分页查询请求携带的各指定信息字段的值确定第二关键字,然后根据分页查询请求携带的分页参数和与第二关键字匹配的第一关键字对应的取值集合确定目标文档标识,并据此从ES中获取分页查询请求的目标信息。可以看出,本发明不是直接在ES中进行分页查询,而是先利用第一关键字及其取值集合确定分页查询请求的目标文档标识,然后再到ES中读取目标文档标识对应的目标信息,能够在保证查询性能的情况下实现深分页查询且能够支持跳页访问。
参见图2,图2是本发明实施例二分页查询方法流程图,如图2所示,该方法主要包括以下步骤:
步骤201、预先配置筛选条件,所述筛选条件包括ES中的各指定信息字段;
步骤2021、监控到新增信息;
步骤2022、判断是否允许使用from+size方式进行分页查询,如果是,则执行步骤2023,否则,执行步骤2024;
本实施例中,判断是否允许使用from+size方式进行分页查询,包括:根据所述分页查询请求携带的分页参数中包括的目标页号和页大小确定所述分页查询请求的目标信息的序号范围,如果该序号范围不属于预设序号范围[1,N],则确定允许使用from+size方式进行分页查询,否则,确定不允许使用from+size方式进行分页查询;其中,N为预设信息条数。
本实施例中,N的具体取值可以根据实际需求设定,例如可以设定为ES支持的使用from+size方式进行分页查询的最大文档数目10000。
本实施例中,页大小是指每一页中可以显示的信息条数,例如分页查询请求携带的目标页号和页大小分别是100、10时,表示查询的是第100页的10条信息,目标信息的序号范围为[1000,1009],因为其序号范围位于[1,10000],因此,可以直接按照from+size方式在ES中进行分页查询。
步骤2023、按照from+size方式获取所述分页查询请求的目标信息;
步骤2024、执行根据所述分页查询请求携带的对应于ES中各指定信息字段的值确定第二关键值及后续步骤,即:根据该新增信息中对应于ES中各指定信息字段的值确定第一关键值,将该新增信息存储到ES并将ES返回的该新增信息对应的文档标识添加到第一关键值对应的取值集合中。
步骤203、接收到用户的分页查询请求时,根据所述分页查询请求携带的对应于ES中各指定信息字段的值确定第二关键值,查找与第二关键值匹配的第一关键值,根据所述分页查询请求中携带的分页参数和查找到的第一关键值对应的取值集合选出所述分页查询请求的目标文档标识,根据所述目标文档标识从ES中获取所述分页查询请求的目标信息。
从图2所示方法可以看出,本实施例中,预先配置筛选条件,筛选条件中包括ES中各指定信息字段;对需要存储到ES的新增信息进行监控,并在监控到新增信息时,根据筛选条件生成新增信息对应的第一关键字,将新增信息存储到ES并将ES返回的该新增信息对应的文档标识添加到第一关键字对应的文档标识集合中;而在接收到分页查询请求时,如果请求查询的是排序靠前的信息,则from+size方式在ES中进行分页查询,当查询的是排序较为靠后的信息(深分页查询)时,按照可以根据分页查询请求携带的各指定信息字段的值确定第二关键字,然后根据分页查询请求携带的分页参数和与第二关键字匹配的第一关键字对应的取值集合确定目标文档标识,并据此从ES中获取分页查询请求的目标信息。可以看出,本发明中在进行深分页查询时,不是直接在ES中进行分页查询,而是先利用第一关键字及其取值集合确定分页查询请求的目标文档标识,然后再到ES中读取目标文档标识对应的目标信息,能够在保证查询性能的情况下实现深分页查询且能够支持跳页访问。
参见图3,图3是本发明实施例三分页查询方法流程图,如图3所所示,该方法主要包括以下步骤:
步骤301、预先配置筛选条件,所述筛选条件包括ES中各指定信息字段;
本实施例中,可以根据用户的分页查询需求,预先指定用于信息筛选的信息字段,即指定信息字段,例如ES包括用户id、机构id、信息类型、信息内容等多个字段,可以将用户id、机构id、以及信息类型作为指定信息字段进行筛选条件配置。
本实施例中,可以在redis中配置筛选条件。所述筛选条件还包括用于指示ES中各指定信息字段是否是必传字段的必传属性;所述必传属性的取值包括必传和非必传。如果某一指定信息字段的必传属性的取值是必传,则用户在查询时,必须输入该指定信息字段的值。
步骤302、监控到新增信息时,根据该新增信息中对应于ES中各指定信息字段的值确定第一关键值,将该新增信息存储到ES并将ES返回的该新增信息对应的文档标识添加到第一关键值对应的取值集合中;
步骤3031、接收到用户的分页查询请求;
步骤3032、判断是否存在满足以下条件的指定信息字段:该指定信息字段的必传属性取值为必传且所述分页查询请求未携带该指定信息字段的值为空,如果是,则执行步骤3033,否则,执行步骤3034;
本实施例中,可以针对ES中的每一指定信息字段,如果该指定信息字段的必传属性取值为必传且所述分页查询请求未携带该指定信息字段的值为空,则可以确定存在满足以下条件的指定信息字段:该指定信息字段的必传属性取值为必传且所述分页查询请求未携带该指定信息字段的值为空。
本实施例中,如果存在必传属性取值为必传的指定信息字段且所述分页查询请求中未携带该指定信息字段的值,则说明查询内容不符合要求,因此可以直接终止本次分页查询。
步骤3033、输出分页查询请求出错提示,并终止本次分页查询;
步骤3034、根据所述分页查询请求携带的对应于ES中各指定信息字段的值确定第二关键值,查找与第二关键值匹配的第一关键值,根据所述分页查询请求中携带的分页参数和查找到的第一关键值对应的取值集合选出所述分页查询请求的目标文档标识,根据所述目标文档标识从ES中获取所述分页查询请求的目标信息。
从图3所示方法可以看出,本实施例中,预先配置筛选条件,所述筛选条件中包括ES中各指定信息字段;对需要存储到ES的新增信息进行监控,并在监控到新增信息时,根据筛选条件生成新增信息对应的第一关键字,将新增信息存储到ES并将ES返回的该新增信息对应的文档标识添加到第一关键字对应的文档标识集合中,这样,当接收到分页查询请求时,如果分页查询请求未携带必传的指定信息字段,则可以直接终止本次查询,否则,可以根据分页查询请求携带的各指定信息字段的值确定第二关键字,然后根据分页查询请求携带的分页参数和与第二关键字匹配的第一关键字对应的取值集合确定目标文档标识,并据此从ES中获取分页查询请求的目标信息。可以看出,本发明不是直接在ES中进行分页查询,而是先利用第一关键字及其取值集合确定分页查询请求的目标文档标识,然后再到ES中读取目标文档标识对应的目标信息,能够在保证查询性能的情况下实现深分页查询且能够支持跳页访问。
参见图4,图4是本发明实施例四分页查询方法流程图,如图4所示,该方法主要包括以下步骤:
步骤401、预先配置筛选条件,所述筛选条件包括ES中各指定信息字段;
本实施例中,可以根据用户的分页查询需求,预先指定用于信息筛选的信息字段,即指定信息字段,例如ES包括用户id、机构id、信息类型、信息内容等多个字段,可以将用户id、机构id、以及信息类型作为指定信息字段进行筛选条件配置。
本实施例中,可以在redis中配置筛选条件。所述筛选条件还包括ES中各指定信息字段的查询属性;所述查询属性的取值包括精确查询和模糊查询,其中,精确查询要求用户输入的对应于查询属性是精确查询的指定信息字段的查询词与待匹配的信息中对应于该指定信息字段的值完全匹配,模糊匹配则要求用户输入的对应于指定信息字段的查询词与待匹配的信息中对应于该指定信息字段的值部分匹配。
步骤402、监控到新增信息时,根据该新增信息中对应于ES中各指定信息字段的值确定第一关键值,将该新增信息存储到ES并将ES返回的该新增信息对应的文档标识添加到第一关键值对应的取值集合中;
步骤4031、接收到用户的分页查询请求时,根据所述分页查询请求携带的对应于ES中各指定信息字段的值确定第二关键值;
步骤4032、查找与第二关键值匹配的第一关键值,如果查找到,则执行步骤4033,否则,执行4034;
步骤4033、根据所述分页查询请求中携带的分页参数和查找到的第一关键值对应的取值集合选出所述分页查询请求的目标文档标识,根据所述目标文档标识从ES中获取所述分页查询请求的目标信息。
步骤4034、确定查询属性是模糊查询的指定信息字段,对查询属性是模糊查询的指定信息字段的值进行切词,根据切词结果和预先设定的提示词库确定该指定信息字段的值对应的一组提示词,输出该组提示词以供用户选择一个提示词以再次触发分页查询请求。
本实施例中,可以预先设置提示词库,提示词库中包括多个词集合;根据切词结果和预先设定的提示词库确定该指定信息字段的值对应的一组提示词,可具体包括:在提示词库中查找切词结果中的每一分词,如果查找到,则将包含该分词的词集合中的词作为该指定信息字段的值对应的一组提示词。在实际应用中,根据切词结果和预先设定的提示词库确定该指定信息字段的值对应的一组提示词也可以采用现有的其它方法实现,不再赘述。
本步骤4034中,如果不存在查询属性是模糊查询的指定信息字段,则可以确定本次未查询到任何信息,返回未查到信息的通知给用户即可。
从图4所示方法可以看出,本实施例中,预先配置筛选条件,筛选条件中包括ES中各指定信息字段;对需要存储到ES的新增信息进行监控,并在监控到新增信息时,根据筛选条件生成新增信息对应的第一关键字,将新增信息存储到ES并将ES返回的该新增信息对应的文档标识添加到第一关键字对应的文档标识集合中,这样,当接收到分页查询请求时,可以根据分页查询请求携带的各指定信息字段的值确定第二关键字,查找与第二关键字匹配的第一关键字,查找到第一关键字时,根据分页查询请求携带的分页参数和与第二关键字匹配的第一关键字对应的取值集合确定目标文档标识,并据此从ES中获取分页查询请求的目标信息,未查找到第一关键字时,可以通过提示词的方式让用户输入更合适的查询词进再次进行分页查询,有助于提升用户体验。可以看出,本发明不是直接在ES中进行分页查询,而是先利用第一关键字及其取值集合确定分页查询请求的目标文档标识,然后再到ES中读取目标文档标识对应的目标信息,能够在保证查询性能的情况下实现深分页查询且能够支持跳页访问。
参见图5,图5是本发明实施例五分页查询方法流程图,如图5所示,该方法主要包括以下步骤:
步骤501、预先配置筛选条件,所述筛选条件包括ES中各指定信息字段;
本实施例中,可以根据用户的分页查询需求,预先指定用于信息筛选的信息字段,即指定信息字段,例如ES包括用户id、机构id、信息类型、信息内容等多个字段,可以将用户id、机构id、以及信息类型作为指定信息字段进行筛选条件配置。
本实施例中,可以在redis中配置筛选条件。所述筛选条件中还包括ES中各指定信息字段的查询属性;所述查询属性的取值包括精确查询和模糊查询,其中,精确查询要求用户输入的对应于查询属性是精确查询的指定信息字段的查询词与待匹配的信息中对应于该指定信息字段的值完全匹配,模糊匹配则要求用户输入的对应于指定信息字段的查询词与待匹配的信息中对应于该指定信息字段的值部分匹配。
本实施例中,所述筛选条件中还包括ES中各指定信息字段的优先级。
步骤5021、监控到新增信息;
步骤5022、确定ES中各指定信息字段中查询属性是模糊查询的指定信息字段;
步骤5023、判断查询属性是模糊查询的指定信息字段数量是否小于2,如果是,则执行步骤5024,否则,执行步骤5025;
步骤5024、将该新增信息中对应于ES中各指定信息字段的值按照预设格式拼接起来,将拼接而成的字符串确定为第一关键值,转至步骤5026;
步骤5025、针对每个查询属性是模糊查询的指定信息字段,将该新增信息中对应于ES中该查询属性是模糊查询的指定信息字段的值与该新增信息中对应于ES中查询属性不是模糊查询的各指定信息字段的值按照预设格式拼接起来,将拼接得到的字符串确定为第一关键值,转至步骤5026;
以上步骤5022至步骤5025是图1所示步骤102中“根据该新增信息中对应于ES中各指定信息字段的值确定第一关键值”的具体细化。
步骤5026、根据该新增信息中对应于ES中各指定信息字段的值确定第一关键值,将该新增信息存储到ES并将ES返回的该新增信息对应的文档标识添加到第一关键值对应的取值集合中;
本实施例中,将ES返回的该新增信息对应的文档标识添加到第一关键值对应的取值集合中,具体包括:将该新增信息对应的文档标识按照预设排序顺序添加到第一关键值对应的取值集合;这里的预设排序顺序,可以是新增信息的新增时间从先到后排序。
以上步骤5021至步骤5026是图1所示步骤102的具体细化。
步骤5031、接收到用户的分页查询请求;
步骤5032、确定ES中各指定信息字段中查询属性是模糊查询的指定信息字段;
步骤5033、判断查询属性是模糊查询的指定信息字段数量是否小于2,如果是,则执行步骤5034,否则,执行步骤5035;
步骤5034、将所述分页查询请求携带的对应于ES中各指定信息字段的值按照预设格式拼接起来,将拼接而成的字符串确定为第二关键值,转至步骤5036;
步骤5035、针对查询属性是模糊查询的每个指定信息字段,将所述分页查询请求携带的对应于ES中该查询属性是模糊查询的指定信息字段的值与所述分页查询请求携带的对应于ES中查询属性不是模糊查询的各指定信息字段的值按照预设格式拼接起来,将拼接得到的字符串确定为第二关键值,转至步骤5036。
以上步骤5032至步骤5035是图1所示步骤103中“根据所述分页查询请求携带的对应于ES中各指定信息字段的值确定第二关键值”的具体细化。
步骤5036、查找与第二关键值匹配的第一关键值,根据所述分页查询请求中携带的分页参数和查找到的第一关键值对应的取值集合选出所述分页查询请求的目标文档标识,根据所述目标文档标识从ES中获取所述分页查询请求的目标信息。
本实施例中,根据所述分页查询请求中携带的分页参数和查找到的第一关键值对应的取值集合选出所述分页查询请求的目标文档标识,具体包括:
当查找到的第一关键值仅有一个时,根据所述分页查询请求携带的分页参数中包括的目标页号和页大小确定所述分页查询请求的目标信息的序号范围,在第一关键值对应的取值集合中选择排序序号在该序号范围内的文档标识作为所述分页查询请求的目标文档标识;
当查找到的第一关键值有多个时,按照拼接与各第一关键值匹配的第二关键值所基于的查询属性为模糊查询的指定信息字段的优先级,对各第一关键值对应的取值集合的文档标识进行排序,将排序序号在该序号范围内的文档标识作为所述分页查询请求的目标文档标识。
例如,用户id和信息类型两个字段的查询属性是模糊查询,其中,用户id的优先级高于信息类型的优先级,那么在接收到用户的分页查询请求时,可以根据分页查询请求携带的机构id和用户id确定一个第二关键字(以下称为key21,基于用户id拼接得到),还可以根据分页查询请求携带的机构id和信息类型确定一个第二关键字(以下称为key22,基于信息类型拼接得到),那么如果查找到了与key21匹配的第一关键词key11,与key22匹配的第一关键词key12,则在对将key11对应的取值集合(假设包括100个文档标识a0-a99)中的文档标识和key12对应的取值集合(假设包括100个文档标识b0-b99)中的文档标识排序时,key11对应的取值集合中的文档标识排序靠前,key12对应的取值集合中的文档标识排序靠后,具体为:a0-a99、b0-b99。如果分页查询请求的目标页号和也大小分别是5、10时,则可以确定所述分页查询请求的目标文档标识是a50-a59,因此可以到ES读取a50-a59对应的目标信息。
从图5所示方法可以看出,本实施例中,预先配置筛选条件,筛选条件中包括ES中各指定信息字段;对需要存储到ES的新增信息进行监控,并在监控到新增信息时,根据筛选条件生成新增信息对应的第一关键字,将新增信息存储到ES并将ES返回的该新增信息对应的文档标识添加到第一关键字对应的文档标识集合中,这样,当接收到分页查询请求时,可以根据分页查询请求携带的各指定信息字段的值确定第二关键字,然后根据分页查询请求携带的分页参数和与第二关键字匹配的第一关键字对应的取值集合和拼接得到第二关键词所基于的查询属性为模糊匹配的指定信息字段的优先级确定目标文档标识,并据此从ES中获取分页查询请求的目标信息。可以看出,本发明不是直接在ES中进行分页查询,而是先利用第一关键字及其取值集合确定分页查询请求的目标文档标识,然后再到ES中读取目标文档标识对应的目标信息,能够在保证查询性能的情况下实现深分页查询且能够支持跳页访问。
参见图6,图6是本发明实施例六分页查询方法流程图,如图6所示,该方法主要包括以下步骤:
步骤601、预先配置筛选条件,所述筛选条件包括ES中各指定信息字段;
步骤602、监控到新增信息时,根据该新增信息中对应于ES中各指定信息字段的值确定第一关键值,将该新增信息存储到ES并将ES返回的该新增信息对应的文档标识添加到第一关键值对应的取值集合中;
步骤6031、接收到用户的分页查询请求时,根据所述分页查询请求携带的对应于ES中各指定信息字段的值确定第二关键值;
步骤6032、查找与第二关键值匹配的第一关键值,如果查找到,则执行步骤6033,否则,执行步骤6034;
本实施例中,为了减少内存占用,减少系统开支,可以对每一第一关键字对应的取值集合设置失效时间,如果在失效时间内接收到对该第一关键字对应的取值集合内的文档标识对应的信息的分页查询请求,则重置该第一关键字对应的取值集合的失效时间;如果在失效时间内未接收到对该第一关键字对应的取值集合内的文档标识对应的信息的分页查询请求,则删除该第一关键字对应的取值集合。
例如,接收到用户的分页查询请求后,根据该分页查询请求携带的指定信息字段确定第二关键字之后,如果查找到与第二关键字匹配的第一关键字(如本步骤6032中查找到与第二关键值匹配的第一关键值的情况),则可以确定该分页查询请求是对该第一关键字对应的取值集合内的文档标识对应的信息的分页查询请求,此时可以重置该第一关键字对应的取值集合的失效时间。
步骤6033、根据所述分页查询请求中携带的分页参数和查找到的第一关键值对应的取值集合选出所述分页查询请求的目标文档标识,根据所述目标文档标识从ES中获取所述分页查询请求的目标信息。
步骤6034、从ES中读取信息,并根据读取的每条信息中对应于ES中各指定信息字段的值确定第一关键值,如果该确定的第一关键值与该第二关键值相同,则将该条信息对应的文档标识添加到该确定的第一关键值对应的取值集合中。
本步骤6034中,在redis中未查找到与第二关键值匹配的第一关键值,可能是因为该第一关键值对应的取值集合因长时间未被访问而导致失效被删除,因此此时可以读取ES中的所有信息,并根据读取的每条信息中对应于ES中各指定信息字段的值确定第一关键值,如果该确定的第一关键值与该第二关键值相同,则将该条信息对应的文档标识添加到该确定的第一关键值对应的取值集合中,从而实现将该第一关键值对应文档标识重新加载到redis的目的。
从图6所示方法可以看出,本实施例中,预先配置筛选条件,筛选条件中包括ES中各指定信息字段;对需要存储到ES的新增信息进行监控,并在监控到新增信息时,根据筛选条件生成新增信息对应的第一关键字,将新增信息存储到ES并将ES返回的该新增信息对应的文档标识添加到第一关键字对应的文档标识集合中,这样,当接收到分页查询请求时,可以根据分页查询请求携带的各指定信息字段的值确定第二关键字,然后根据分页查询请求携带的分页参数和与第二关键字匹配的第一关键字对应的取值集合确定目标文档标识,并据此从ES中获取分页查询请求的目标信息。另外,本实施例中,还通过对第一关键词对应的取值集合设置失效时间,可以从内存中清除长时间未被访问的取值集合,从而能够减少内存占用和系统开支。可以看出,本发明不是直接在ES中进行分页查询,而是先利用第一关键字及其取值集合确定分页查询请求的目标文档标识,然后再到ES中读取目标文档标识对应的目标信息,能够在保证查询性能的情况下实现深分页查询且能够支持跳页访问。
参见图7,图7是本发明实施例七分页查询方法流程图,如图7所示,该方法主要包括以下步骤:
步骤701、预先配置筛选条件,所述筛选条件包括ES中各指定信息字段;
步骤702、监控到新增信息时,根据该新增信息中对应于ES中各指定信息字段的值确定第一关键值,将该新增信息存储到ES并将ES返回的该新增信息对应的文档标识添加到第一关键值对应的取值集合中;
步骤703、监控到对已有信息的删除请求时,根据该已有信息中对应于ES中各指定信息字段的值确定第一关键值,将该已有信息从ES中删除并将该已有信息对应的文档标识从第一关键值对应的取值集合中删除。
步骤704、接收到用户的分页查询请求时,根据所述分页查询请求携带的对应于ES中各指定信息字段的值确定第二关键值,查找与第二关键值匹配的第一关键值,根据所述分页查询请求中携带的分页参数和查找到的第一关键值对应的取值集合选出所述分页查询请求的目标文档标识,根据所述目标文档标识从ES中获取所述分页查询请求的目标信息。
从图7所示方法可以看出,本实施例中,预先配置筛选条件,筛选条件中包括ES中各指定信息字段;对需要存储到ES的新增信息进行监控,并在监控到新增信息时,根据筛选条件生成新增信息对应的第一关键字,将新增信息存储到ES并将ES返回的该新增信息对应的文档标识添加到第一关键字对应的文档标识集合中,这样,当接收到分页查询请求时,可以根据分页查询请求携带的各指定信息字段的值确定第二关键字,然后根据分页查询请求携带的分页参数和与第二关键字匹配的第一关键字对应的取值集合确定目标文档标识,并据此从ES中获取分页查询请求的目标信息。另外,本实施例还支持对已有信息的删除。可以看出,本发明不是直接在ES中进行分页查询,而是先利用第一关键字及其取值集合确定分页查询请求的目标文档标识,然后再到ES中读取目标文档标识对应的目标信息,能够在保证查询性能的情况下实现深分页查询且能够支持跳页访问。
参见图8,图8是本发明实施例八分页查询方法流程图,如图8所示,该方法主要包括以下步骤:
步骤801、预先配置筛选条件,所述筛选条件包括ES中各指定信息字段;
步骤802、监控到新增信息时,根据该新增信息中对应于ES中各指定信息字段的值确定第一关键值,将该新增信息存储到ES并将ES返回的该新增信息对应的文档标识添加到第一关键值对应的取值集合中;
步骤803、监控到对已有信息的修改请求时,如果修改请求携带的修改字段是ES中的指定信息字段,则先根据该已有信息中对应于ES中各指定信息字段的值确定第一关键值,将该已有信息对应的文档标识从该第一关键值对应的取值集合中删除;再根据修改后的已有信息中对应于ES中各指定信息字段的值确定第一关键值,将该已有信息对应的文档标识添加到该第一关键值对应的取值集合中,并根据对已有信息的修改请求对ES中的已有信息进行修改;如果修改请求携带的修改字段不是ES中的指定信息字段,则根据对已有信息的修改请求对ES中的已有信息进行修改。
步骤804、接收到用户的分页查询请求时,根据所述分页查询请求携带的对应于ES中各指定信息字段的值确定第二关键值,查找与第二关键值匹配的第一关键值,根据所述分页查询请求中携带的分页参数和查找到的第一关键值对应的取值集合选出所述分页查询请求的目标文档标识,根据所述目标文档标识从ES中获取所述分页查询请求的目标信息。
从图8所示方法可以看出,本实施例中,预先配置筛选条件,筛选条件中包括ES中各指定信息字段;对需要存储到ES的新增信息进行监控,并在监控到新增信息时,根据筛选条件生成新增信息对应的第一关键字,将新增信息存储到ES并将ES返回的该新增信息对应的文档标识添加到第一关键字对应的文档标识集合中,这样,当接收到分页查询请求时,可以根据分页查询请求携带的各指定信息字段的值确定第二关键字,然后根据分页查询请求携带的分页参数和与第二关键字匹配的第一关键字对应的取值集合确定目标文档标识,并据此从ES中获取分页查询请求的目标信息。另外,本实施例还支持对已有信息的修改。可以看出,本发明不是直接在ES中进行分页查询,而是先利用第一关键字及其取值集合确定分页查询请求的目标文档标识,然后再到ES中读取目标文档标识对应的目标信息,能够在保证查询性能的情况下实现深分页查询且能够支持跳页访问。
以上对本发明实施例分页查询方法进行了详细说明,本发明实施例还提供了一种分布式搜索引擎的分页查询装置,仍以ES为例,以下结合图9进行详细说明。
参见图9,图9是本发明实施例分页查询装置的结构示意图,如图9所示,该装置包括:
配置单元901,用于预先配置筛选条件,所述筛选条件包括ES中各指定信息字段;
监控单元902,用于监控到新增信息时,根据该新增信息中对应于ES中各指定信息字段的值确定第一关键值,将该新增信息存储到ES并将ES返回的该新增信息对应的文档标识添加到第一关键值对应的取值集合中;
查询单元903,用于接收到用户的分页查询请求时,根据所述分页查询请求携带的对应于ES中各指定信息字段的值确定第二关键值,查找与第二关键值匹配的第一关键值,根据所述分页查询请求中携带的分页参数和查找到的第一关键值对应的取值集合选出所述分页查询请求的目标文档标识,根据所述目标文档标识从ES中获取所述分页查询请求的目标信息。
图9所示装置中,
所述查询单元903,接收到用户的分页查询请求之后,执行根据所述分页查询请求携带的对应于ES中各指定信息字段的值确定第二关键值及后续步骤之前,进一步包括:
判断是否允许使用from+size方式进行分页查询,如果是,则按照from+size方式获取所述分页查询请求的目标信息,否则,执行根据所述分页查询请求携带的对应于ES中各指定信息字段的值确定第二关键值及后续步骤。
图9所示装置中,
所述查询单元903,判断是否允许使用from+size方式进行分页查询,包括:
根据所述分页查询请求携带的分页参数中包括的目标页号和页大小确定所述分页查询请求的目标信息的序号范围,如果该序号范围不属于预设序号范围[1,N],则确定允许使用from+size方式进行分页查询,否则,确定不允许使用from+size方式进行分页查询;其中,N为预设信息条数。
图9所示装置中,
所述筛选条件中还包括用于指示ES中指定信息字段是否是必传字段的必传属性;所述必传属性的取值包括必传和非必传;
所述查询单元903,接收到用户的分页查询请求之后,执行根据所述分页查询请求携带的对应于ES中各指定信息字段的值确定第二关键值及后续步骤之前,进一步包括:
针对ES中各指定信息字段,当该指定信息字段的必传属性取值为必传且所述分页查询请求未携带该指定信息字段的值时,输出分页查询请求出错提示,并终止本次分页查询。
图9所示装置中,
所述筛选条件中还包括ES中各指定信息字段的查询属性;所述查询属性的取值包括精确查询和模糊查询;
所述查询单元903,进一步用于:如果未查找到与第二关键值匹配的第一关键值,则确定查询属性是模糊查询的指定信息字段,对查询属性是模糊查询的指定信息字段的值进行切词,根据切词结果和预先设定的提示词库确定该指定信息字段的值对应的一组提示词,输出该组提示词以供用户选择一个提示词以再次触发分页查询请求。
图9所示装置中,
所述筛选条件中还包括ES中各指定信息字段的查询属性;所述查询属性的取值包括精确查询和模糊查询;
所述监控单元902,根据该新增信息中对应于ES中各指定信息字段的值确定第一关键值,包括:
确定ES中各指定信息字段中查询属性是模糊查询的指定信息字段;
如果查询属性是模糊查询的指定信息字段数量小于2,则将该新增信息中对应于ES中各指定信息字段的值按照预设格式拼接起来,将拼接而成的字符串确定为第一关键值;
否则,针对每个查询属性是模糊查询的指定信息字段,将该新增信息中对应于ES中该查询属性是模糊查询的指定信息字段的值与该新增信息中对应于ES中查询属性不是模糊查询的各指定信息字段的值按照预设格式拼接起来,将拼接得到的字符串确定为第一关键值;
所述查询单元903,根据所述分页查询请求携带的对应于ES中各指定信息字段的值确定第二关键值,包括:
确定ES中各指定信息字段中查询属性是模糊查询的指定信息字段;
如果查询属性是模糊查询的指定信息字段数量小于2,则将所述分页查询请求携带的对应于ES中各指定信息字段的值按照预设格式拼接起来,将拼接而成的字符串确定为第二关键值;
否则,针对查询属性是模糊查询的每个指定信息字段,将所述分页查询请求携带的对应于ES中该查询属性是模糊查询的指定信息字段的值与所述分页查询请求携带的对应于ES中查询属性不是模糊查询的各指定信息字段的值按照预设格式拼接起来,将拼接得到的字符串确定为第二关键值。
图9所示装置中,所述筛选条件中还包括ES中各指定信息字段的优先级;
所述监控单元902,将ES返回的该新增信息对应的文档标识添加到第一关键值对应的取值集合中,包括:将该新增信息对应的文档标识按照预设排序顺序添加到第一关键值对应的取值集合;
所述查询单元902,根据所述分页查询请求中携带的分页参数和查找到的第一关键值对应的取值集合选出所述分页查询请求的目标文档标识,包括:
当查找到的第一关键值仅有一个时,根据所述分页查询请求携带的分页参数中包括的目标页号和页大小确定所述分页查询请求的目标信息的序号范围,在第一关键值对应的取值集合中选择排序序号在该序号范围内的文档标识作为所述分页查询请求的目标文档标识;
当查找到的第一关键值有多个时,按照拼接与各第一关键值匹配的第二关键值所基于的查询属性为模糊查询的指定信息字段的优先级,对各第一关键值对应的取值集合的文档标识进行排序,将排序序号在该序号范围内的文档标识作为所述分页查询请求的目标文档标识。
图9所示装置中,
所述监控单元902,进一步用于:对每一第一关键字对应的取值集合设置失效时间,如果在失效时间内接收到对该第一关键字对应的取值集合内的文档标识对应的信息的分页查询请求,则重置该第一关键字对应的取值集合的失效时间;如果在失效时间内未接收到对该第一关键字对应的取值集合内的文档标识对应的信息的分页查询请求,则删除该第一关键字对应的取值集合。
图9所示装置中,
所述查询单,903,进一步用于:如果未查找到与第二关键值匹配的第一关键值,则从ES中读取信息,并根据读取的每条信息中对应于ES中各指定信息字段的值确定第一关键值,如果该确定的第一关键值与该第二关键值相同,则将该条信息对应的文档标识添加到该确定的第一关键值对应的取值集合中。
图9所示装置中,
所述监控单元902,进一步用于:监控到对已有信息的删除请求时,根据该已有信息中对应于ES中各指定信息字段的值确定第一关键值,将该已有信息从ES中删除并将该已有信息对应的文档标识从第一关键值对应的取值集合中删除。
图9所示装置中,
所述监控单元902,进一步用于:监控到对已有信息的修改请求时,如果修改请求携带的修改字段是ES中的指定信息字段,则先根据该已有信息中对应于ES中各指定信息字段的值确定第一关键值,将该已有信息对应的文档标识从该第一关键值对应的取值集合中删除;再根据修改后的已有信息中对应于ES中各指定信息字段的值确定第一关键值,将该已有信息对应的文档标识添加到该第一关键值对应的取值集合中,并根据对已有信息的修改请求对ES中的已有信息进行修改;如果修改请求携带的修改字段不是ES中的指定信息字段,则根据对已有信息的修改请求对ES中的已有信息进行修改。
本发明实施例还提供了一种电子设备,如图10所示,该电子设备包括:至少一个处理器1001,以及与所述至少一个处理器1001通过总线相连的存储器1002;所述存储器1002存储有可被所述至少一个处理器1001执行的一个或多个计算机程序;所述至少一个处理器1001执行所述一个或多个计算机程序时实现图1-8中任一流程图所示的分页查询方法中的步骤。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个计算机程序,所述一个或多个计算机程序被处理器执行时实现图1-8中任一流程图所示的分页查询方法中的步骤。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
机译: 寻呼数据查询方法和装置,电子设备和存储介质
机译: 查询方法,装置,电子设备和存储介质
机译: 表智能查询方法和装置,电子设备和计算机可读存储介质