分页查询方法、装置以及计算机可读存储介质与流程

文档序号:29091174发布日期:2022-03-02 02:51阅读:73来源:国知局
分页查询方法、装置以及计算机可读存储介质与流程

1.本发明涉及计算机技术领域,具体提供一种分页查询方法、装置以及计算机可读存储介质。


背景技术:

2.随着搜索技术发展,搜索引擎的功能也不断提升。elasticsearch是一个分布式、restful(一种网络应用程序的设计风格和开发方式)风格的搜索和数据分析引擎,在数据量呈几何级增长的现在,elasticsearch的使用解决了大量数据的快速、高效查询及聚合的问题。但是在进行大数据量的分页查询时,elasticsearch则不能无限制地满足需要。以通常的深分页(from-size)方式进行的分页查询为例,在超过elasticsearch的默认分页深度时会报错,即使调整了elasticsearch的默认分页深度,深分页时仍然会造成较大的内存与时间消耗,应用在连续访问很深的页时,等待响应会消耗大量时间。
3.因此,需要一种技术方案,减少分页查询的资源消耗,提升分页查询的效率。


技术实现要素:

4.为了克服上述缺陷,提出了本发明,以提供解决或至少部分地解决如何减少分页查询的资源消耗,提升分页查询的效率的技术问题的分页查询方法、装置以及计算机可读存储介质。
5.在第一方面,本发明提供一种分页查询方法,所述方法包括:
6.获取应用对搜索引擎发出的进行分页查询的申请,所述申请中携带分页查询的查询条件和分页参数;
7.查询缓存中是否存在与所述查询条件匹配的第一文档的标识信息;
8.在所述缓存中不存在所述第一文档的标识信息时,请求所述搜索引擎按所述查询条件进行游标查询,得到所述第一文档的标识信息,并存储到所述缓存中;
9.根据所述分页参数,对所述缓存中所述第一文档的标识信息进行筛选,得到作为分页查询结果的第二文档的标识信息;
10.请求所述搜索引擎按所述第二文档的标识信息查询出所述第二文档;
11.将所述第二文档提供给所述应用。
12.在上述分页查询方法的一个技术方案中,还包括:
13.在所述缓存中存在所述第一文档的标识信息时,执行“根据所述分页参数,对所述缓存中所述第一文档的标识信息进行筛选,得到作为分页查询结果的第二文档的标识信息”的步骤;
14.和/或,还包括:
15.在无法将所述第一文档的标识信息存储到所述缓存中时,删除所述缓存中访问时间最早和/或访问频率最低的数据后,再进行存储;
16.和/或,还包括:
17.在所述第一文档的标识信息存储到所述缓存后超过预设时间未被访问时,从所述缓存中删除所述第一文档的标识信息;
18.和/或,还包括:
19.在所述缓存被使用的空间超过预设阈值时,删除所述缓存中访问时间最早和/或访问频率最低的数据。
20.在第二方面,提供一种分页查询装置,所述装置包括:
21.查询接收模块,获取应用对搜索引擎发出的进行分页查询的申请,所述申请中携带分页查询的查询条件和分页参数;
22.标识查询模块,查询缓存中是否存在与所述查询条件匹配的第一文档的标识信息;
23.游标查询模块,在所述缓存中不存在所述第一文档的标识信息时,请求所述搜索引擎按所述查询条件进行游标查询,得到所述第一文档的标识信息,并存储到所述缓存中;
24.标识筛选模块,根据所述分页参数,对所述缓存中所述第一文档的标识信息进行筛选,得到作为分页查询结果的第二文档的标识信息;
25.文档查询模块,请求所述搜索引擎按所述第二文档的标识信息查询出所述第二文档;
26.查询反馈模块,将所述第二文档提供给所述应用。
27.在上述分页查询装置的一个技术方案中,所述标识筛选模块在所述缓存中存在所述第一文档的标识信息时,执行“根据所述分页参数,对所述缓存中所述第一文档的标识信息进行筛选,得到作为分页查询结果的第二文档的标识信息”;
28.和/或
29.所述游标查询模块还在无法将所述第一文档的标识信息存储到所述缓存中时,删除所述缓存中访问时间最早和/或访问频率最低的数据,再进行存储;
30.和/或,还包括:
31.第一缓存清理模块,在所述第一文档的标识信息存储到所述缓存后超过预设时间未被访问时,从所述缓存中删除所述第一文档的标识信息;
32.和/或,还包括:
33.第二缓存清理模块,在所述缓存被使用的空间超过预设阈值时,删除所述缓存中访问时间最早和/或访问频率最低的数据。
34.在第三方面,提供一种控制装置,该控制装置包括处理器和存储装置,所述存储装置适于存储多条程序代码,所述程序代码适于由所述处理器加载并运行以执行上述分页查询方法的技术方案中任一项技术方案所述分页查询方法。
35.在第四方面,提供一种计算机可读存储介质,该计算机可读存储介质其中存储有多条程序代码,所述程序代码适于由处理器加载并运行以执行上述分页查询方法的技术方案中任一项技术方案所述的上述分页查询方法。
36.本发明上述一个或多个技术方案,至少具有如下一种或多种有益效果:
37.在实施本发明的一个技术方案中,分页查询方法可以包括下列步骤:获取应用对搜索引擎发出的进行分页查询的申请,申请中携带分页查询的查询条件和分页参数,当分页参数指示分页深度较高时,搜索引擎执行分页查询的资源消耗较高、效率较低;查询缓存
中是否存在与查询条件匹配的第一文档的标识信息;在缓存中不存在第一文档的标识信息时,请求搜索引擎按查询条件进行游标查询,得到第一文档的标识信息,并存储到缓存中,游标查询对资源占用较少、效率较高,而文档标识信息体积较小,通过游标查询获取的所有满足查询条件的文档标识信息可以快速存入缓存;根据分页参数,对缓存中第一文档的标识信息进行筛选,得到作为分页查询结果的第二文档的标识信息,按照分页参数可以快速计算出需要作为分页查询结果的文档;请求搜索引擎按第二文档的标识信息查询出第二文档,此时按第二文档的标识信息进行精准查询,效率较高;将第二文档提供给应用。本发明的分页查询方法,利用游标查询将符合查询条件的文档的标识信息存储到缓存中,再基于分页参数筛选出作为分页查询结果的文档的标识信息,基于该标识信息进行精准查询,获得的文档反馈给应用,整个过程占用资源较少、查询效率较高。
附图说明
38.参照附图,本发明的公开内容将变得更易理解。本领域技术人员容易理解的是:这些附图仅仅用于说明的目的,而并非意在对本发明的保护范围组成限制。其中:
39.图1是根据本发明的一个实施例的分页查询方法的主要步骤流程示意图;
40.图2是根据本发明的一个实施例的分页查询方法的主要步骤流程示意图;
41.图3是根据本发明的一个实施例的分页查询方法的工作原理示意图;
42.图4是根据本发明的一个实施例的分页查询装置的主要结构框图示意图;
43.图5是根据本发明的另一个实施例的分页查询装置的主要结构框图示意图;
44.图6是根据本发明的另一个实施例的分页查询装置的工作流程示意图。
具体实施方式
45.下面参照附图来描述本发明的一些实施方式。本领域技术人员应当理解的是,这些实施方式仅仅用于解释本发明的技术原理,并非旨在限制本发明的保护范围。
46.在本发明的描述中,“模块”、“处理器”可以包括硬件、软件或者两者的组合。一个模块可以包括硬件电路,各种合适的感应器,通信端口,存储器,也可以包括软件部分,比如程序代码,也可以是软件和硬件的组合。处理器可以是中央处理器、微处理器、图像处理器、数字信号处理器或者其他任何合适的处理器。处理器具有数据和/或信号处理功能。处理器可以以软件方式实现、硬件方式实现或者二者结合方式实现。非暂时性的计算机可读存储介质包括任何合适的可存储程序代码的介质,比如磁碟、硬盘、光碟、闪存、只读存储器、随机存取存储器等等。术语“a和/或b”表示所有可能的a与b的组合,比如只是a、只是b或者a和b。术语“至少一个a或b”或者“a和b中的至少一个”含义与“a和/或b”类似,可以包括只是a、只是b或者a和b。单数形式的术语“一个”、“这个”也可以包含复数形式。
47.参阅附图1,图1是根据本发明的一个实施例的分页查询方法的主要步骤流程示意图。如图1所示,本发明实施例中的分页查询方法主要包括下列步骤:
48.步骤s110,获取应用对搜索引擎发出的进行分页查询的申请,申请中携带分页查询的查询条件和分页参数。
49.本发明对搜索引擎的类型不进行限制,以下实施例中以elasticsearch为例进行说明,不表示本发明的技术方案仅适用于elasticsearch。elasticsearch是面向文档的,而
文档是elasticsearch中可搜索的最小单位,elasticsearch的文档由一个或多个字段组成,类似于关系型数据库中的一行记录。该应用可以是任何需要开展分页查询的应用。查询条件影响了查询结果内容。对elasticsearch而言,分页参数包括from和size,对于其他搜索引擎,分页参数可以有其他形式,以通常的深分页(from-size)方式进行大数据量的分页查询时,超过elasticsearch的默认分页深度时会报错,即使调整了elasticsearch的默认分页深度,仍然会造成较大的内存与时间消耗。
50.步骤s120,查询缓存中是否存在与查询条件匹配的第一文档的标识信息。
51.当应用使用深分页查询向elasticsearch查询时,本实施例首先会以查询条件为参数向缓存查找是否有对应的缓存记录,此时查询条件中的页码和页号等分页参数是不作为缓存查询参数的。
52.步骤s130,在缓存中不存在第一文档的标识信息时,请求搜索引擎按查询条件进行游标查询,得到第一文档的标识信息,并存储到缓存中。
53.若未查询到记录,则会转向使用elasticsearch的scroll查询(游标查询),将该查询条件能筛选出的所有文档的文档id(标识信息)按序存入缓存。scroll查询可以用来对elasticsearch有效地执行大批量的文档查询,而又不用付出深度分页的时间代价,但是scroll查询每次只能获取下一页数据,无法获取指定页的数据。elasticsearch中每一个文档,除了保存写入的文档原始数据外,也有文档自己的元数据,这些元数据用于标识文档的相关信息,文档id是元数据的一部分。文档id是一个文档的唯一标识,这个id可以由写入时自己指定,也可以由elasticsearch自动生成。
54.步骤s140,根据分页参数,对缓存中第一文档的标识信息进行筛选,得到作为分页查询结果的第二文档的标识信息。
55.在缓存中存放请求对应的所有数据后,通过分页参数进行计算可以迅速定位作为分页查询结果的对应页,并取出对应的文档id。
56.步骤s150,请求搜索引擎按第二文档的标识信息查询出第二文档。
57.步骤s 160,将第二文档提供给应用。
58.取出对应的文档id后,向elasticsearch进行精确查询获得对应的文档返回给应用,精确查询效率较高。
59.本实施例的分页查询方法,利用游标查询将符合查询条件的文档的标识信息存储到缓存中,再基于分页参数筛选出作为分页查询结果的文档的标识信息,基于该标识信息进行精准查询,获得的文档反馈给应用,整个过程占用资源较少、查询效率较高。
60.参阅附图2,图2是根据本发明的一个实施例的分页查询方法的主要步骤流程示意图。如图2所示,本发明实施例中的分页查询方法主要包括下列步骤:
61.步骤s210,获取应用对搜索引擎发出的进行分页查询的申请,申请中携带分页查询的查询条件和分页参数。
62.步骤s220,查询缓存中是否存在与查询条件匹配的第一文档的标识信息,在缓存中不存在第一文档的标识信息时,进入步骤s230,在缓存中存在第一文档的标识信息时,进入步骤s240。
63.步骤s230,请求搜索引擎按查询条件进行游标查询,得到第一文档的标识信息,并存储到缓存中。
64.进一步地,在无法将第一文档的标识信息存储到缓存中时,删除缓存中访问时间最早和/或访问频率最低的数据后,再进行存储。同时,在第一文档的标识信息存储到缓存后超过预设时间未被访问时,从缓存中删除第一文档的标识信息。
65.当缓存空间不足以写入文档标识信息时,删除其中最旧的数据,或者是长期未被访问的数据。而且存储的文档标识信息会有超时时间,当有文档标识信息超过一定时间还未被再次访问,则该数据会被清除。
66.步骤s240,根据分页参数,对缓存中第一文档的标识信息进行筛选,得到作为分页查询结果的第二文档的标识信息。
67.步骤s250,请求搜索引擎按第二文档的标识信息查询出第二文档。
68.步骤s260,将第二文档提供给应用。
69.步骤s270,在缓存被使用的空间超过预设阈值时,删除缓存中访问时间最早和/或访问频率最低的数据。
70.缓存空间是有限的,当使用的缓存空间超过设置的阈值之后会清除最近最少使用的查询请求对应的记录。
71.基于本实施例,设计了一套能缓存对elasticsearch的申请以及对elasticsearch进行应答且能够动态调整缓存数据的框架,解决应用在连续访问很深的页的时候,等待时间过长的问题,具体如图3所示。如图3所示的顺序图,当应用使用深分页查询向elasticsearch查询时,框架首先会以查询条件为参数向缓存查找是否有对应的文档id的缓存记录,缓存是框架的一部分,具体的实现有多种方式,例如,可以使用redis、hbase等,甚至能够以文件的方式作为缓存;若未查询到记录,则会转向使用elasticsearch的scroll查询,将满足查询条件的所有文档的文档id按序存入缓存;若查询到记录,由于缓存中存放的是满足查询条件的所有文档id,则基于from+size参数进行计算可以迅速定位对应页的文档id,取出对应的文档id后,向elasticsearch进行精确查询获得对应的文档返回给应用,由于精确查询的效率十分优秀,使得非第一次分页查询的效率显著提升。
72.进一步,本发明还提供了一种分页查询装置。
73.参阅附图4,图4是根据本发明的一个实施例的分页查询装置的主要结构框图示意图。如图4所示,本发明实施例中的分页查询装置主要包括下列模块:
74.查询接收模块410,获取应用对搜索引擎发出的进行分页查询的申请,申请中携带分页查询的查询条件和分页参数。
75.本发明对搜索引擎的类型不进行限制,以下实施例中以elasticsearch为例进行说明,不表示本发明的技术方案仅适用于elasticsearch。elasticsearch是面向文档的,而文档是elasticsearch中可搜索的最小单位,elasticsearch的文档由一个或多个字段组成,类似于关系型数据库中的一行记录。该应用可以是任何需要开展分页查询的应用。查询条件影响了查询结果内容。对elasticsearch而言,分页参数包括from和size,对于其他搜索引擎,分页参数可以有其他形式,以通常的深分页(from-size)方式进行大数据量的分页查询时,超过elasticsearch的默认分页深度时会报错,即使调整了elasticsearch的默认分页深度,仍然会造成较大的内存与时间消耗。
76.标识查询模块420,查询缓存中是否存在与查询条件匹配的第一文档的标识信息。
77.当应用使用深分页查询向elasticsearch查询时,本实施例首先会以查询条件为
参数向缓存查找是否有对应的缓存记录,此时查询条件中的页码和页号等分页参数是不作为缓存查询参数的。
78.游标查询模块430,在缓存中不存在第一文档的标识信息时,请求搜索引擎按查询条件进行游标查询,得到第一文档的标识信息,并存储到缓存中。
79.若未查询到记录,则会转向使用elasticsearch的scroll查询(游标查询),将该查询条件能筛选出的所有文档的文档id(标识信息)按序存入缓存。scroll查询可以用来对elasticsearch有效地执行大批量的文档查询,而又不用付出深度分页的时间代价,但是scroll查询每次只能获取下一页数据,无法获取指定页的数据。elasticsearch中每一个文档,除了保存写入的文档原始数据外,也有文档自己的元数据,这些元数据用于标识文档的相关信息,文档id是元数据的一部分。文档id是一个文档的唯一标识,这个id可以由写入时自己指定,也可以由elasticsearch自动生成。
80.标识筛选模块440,根据分页参数,对缓存中第一文档的标识信息进行筛选,得到作为分页查询结果的第二文档的标识信息。
81.在缓存中存放请求对应的所有数据后,通过分页参数进行计算可以迅速定位作为分页查询结果的对应页,并取出对应的文档id。
82.文档查询模块450,请求搜索引擎按第二文档的标识信息查询出第二文档。
83.查询反馈模块460,将第二文档提供给应用。
84.取出对应的文档id后,向elasticsearch进行精确查询获得对应的文档返回给应用,精确查询效率较高。
85.本实施例的分页查询方法,利用游标查询将符合查询条件的文档的标识信息存储到缓存中,再基于分页参数筛选出作为分页查询结果的文档的标识信息,基于该标识信息进行精准查询,获得的文档反馈给应用,整个过程占用资源较少、查询效率较高。
86.参阅附图5,图5是根据本发明的一个实施例的分页查询装置的主要结构框图示意图。如图5所示,本发明实施例中的分页查询装置主要包括下列模块:
87.查询接收模块510,获取应用对搜索引擎发出的进行分页查询的申请,申请中携带分页查询的查询条件和分页参数。
88.标识查询模块520,查询缓存中是否存在与查询条件匹配的第一文档的标识信息。
89.游标查询模块530,请求搜索引擎按查询条件进行游标查询,得到第一文档的标识信息,并存储到缓存中。
90.游标查询模块530还在无法将第一文档的标识信息存储到缓存中时,删除缓存中访问时间最早和/或访问频率最低的数据后,再进行存储。当缓存空间不足以写入文档标识信息时,删除其中最旧的数据,或者是长期未被访问的数据。
91.标识筛选模块540,在游标查询模块530完成存储,或缓存中早先存在所述第一文档的标识信息时,根据分页参数,对缓存中第一文档的标识信息进行筛选,得到作为分页查询结果的第二文档的标识信息。
92.文档查询模块550,请求搜索引擎按第二文档的标识信息查询出第二文档。
93.查询反馈模块560,将第二文档提供给应用。
94.第一缓存清理模块570,在第一文档的标识信息存储到缓存后超过预设时间未被访问时,从缓存中删除第一文档的标识信息。
95.第二缓存清理模块580,在缓存被使用的空间超过预设阈值时,删除缓存中访问时间最早和/或访问频率最低的数据。
96.存储的文档标识信息会有超时时间,当有文档标识信息超过一定时间还未被再次访问,则该数据会被清除。而且,缓存空间是有限的,当使用的缓存空间超过设置的阈值之后会清除最近最少使用的查询请求对应的记录。
97.基于本实施例,设计了一套能缓存对elasticsearch的申请以及对elasticsearch进行应答且能够动态调整缓存数据的框架,解决应用在连续访问很深的页的时候,等待时间过长的问题,具体如图6所示。如图6所示的流程图,步骤s610,新缓存数据获取:当按查询条件检索的文档id在缓存中未找到时,会从elasticsearch通过scroll请求获得所有符合条件的文档id作为新的缓存数据;步骤s620,删除最近最少使用的数据:每当一个文档id被访问时,会更新该数据的访问时间,需要清理数据时会按照访问时间寻找最靠前的文档id进行删除。步骤s630,写入缓存:当缓存剩余空间足够新的缓存数据写入时,框架会将数据写入缓存;步骤s640,返回数据:通过from+size参数进行计算,可以得出分页查询结果对应的文档id,通过文档id获得文档返回给应用,并将当前时间记录为访问时间。
98.上述图4至5所示的分页查询装置以用于执行图1至2所示的分页查询方法实施例,两者的技术原理、所解决的技术问题及产生的技术效果相似,本技术领域技术人员可以清楚地了解到,为了描述的方便和简洁,分页查询装置的具体工作过程及有关说明,可以参考分页查询方法的实施例所描述的内容,此处不再赘述。
99.本领域技术人员能够理解的是,本发明实现上述一实施例的方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读存储介质可以包括:能够携带所述计算机程序代码的任何实体或装置、介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器、随机存取存储器、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读存储介质不包括电载波信号和电信信号。
100.进一步,本发明还提供了一种控制装置。在根据本发明的一个控制装置实施例中,控制装置包括处理器和存储装置,存储装置可以被配置成存储执行上述方法实施例的分页查询方法的程序,处理器可以被配置成用于执行存储装置中的程序,该程序包括但不限于执行上述方法实施例的分页查询方法的程序。为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该控制装置可以是包括各种电子设备形成的控制装置设备。
101.进一步,本发明还提供了一种计算机可读存储介质。在根据本发明的一个计算机可读存储介质实施例中,计算机可读存储介质可以被配置成存储执行上述方法实施例的分页查询方法的程序,该程序可以由处理器加载并运行以实现上述分页查询方法。为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该计算机可读存储介质可以是包括各种电子设备形成的存储装置设备,可选的,
本发明实施例中计算机可读存储介质是非暂时性的计算机可读存储介质。
102.进一步,应该理解的是,由于各个模块的设定仅仅是为了说明本发明的装置的功能单元,这些模块对应的物理器件可以是处理器本身,或者处理器中软件的一部分,硬件的一部分,或者软件和硬件结合的一部分。因此,图中的各个模块的数量仅仅是示意性的。
103.本领域技术人员能够理解的是,可以对装置中的各个模块进行适应性地拆分或合并。对具体模块的这种拆分或合并并不会导致技术方案偏离本发明的原理,因此,拆分或合并之后的技术方案都将落入本发明的保护范围内。
104.至此,已经结合附图所示的优选实施方式描述了本发明的技术方案,但是,本领域技术人员容易理解的是,本发明的保护范围显然不局限于这些具体实施方式。在不偏离本发明的原理的前提下,本领域技术人员可以对相关技术特征作出等同的更改或替换,这些更改或替换之后的技术方案都将落入本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1