一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种加速Elasticsearch搜索的方法及装置与流程

2022-11-19 09:25:29 来源:中国专利 TAG:

一种加速elasticsearch搜索的方法及装置
技术领域
1.本发明属于计算机技术领域,具体而言属于一种加速elasticsearch搜索的方法及装置。


背景技术:

2.elasticsaerch是一个分布式、支持多租户、实时搜索和数据分析的全文搜索引擎。通过部署多节点elasticsearch集群,用户可以方便有效的管理pb量级的日志。而针对海量日志,elasticsearch通过索引生命周期管理功能,实现热温冷数据存储架构。在该架构下,一般我们可以通过索引别名,快速搜索到最近时间的日志。但是随着查询时间范围的扩大,符合条件的日志数量也会快速增加,因为elasticsearch执行分布式检索时候,会查询同一别名下的所有索引,如果还是通过索引别名搜索,可能会出现慢查询,甚至查询超时情况。
3.有鉴于此,特提出本发明。


技术实现要素:

4.有鉴于此,本发明公开了一种加速elasticsearch搜索的方法及装置,通过构建详细的时间元数据信息,提高海量日志搜索效率,降低慢查询、查询超时出现频率。
5.具体地,本发明是通过以下技术方案实现的:
6.第一方面,本发明公开了一种加速elasticsearch搜索的方法,包括如下步骤:
7.s1、对elasticsearch所有索引数据添加一个时间元数据信息,并将所述时间元数据信息保存到redis数据库,生成索引列表;
8.s2、根据客户端请求,获取用户要搜索的日志时间范围,并判断其为同步查询还是异步查询;
9.s3、若为所述同步查询,利用elasticsearch_msearch接口搜索所述索引列表,并计算不符合时间范围条件的同步miss_list,通过语法计算得到同步准确索引列表;
10.s4、若为所述异步查询,利用elasticsearch_async_search接口搜索所述索引列表,并分别计算符合时间范围条件的异步hit_list和不符合时间范围条件的异步miss_list,添加未来索引feture_list,通过组合得到异步准确索引列表;
11.s5、将查询结果返回给所述客户端。
12.上述通过对elasticsearch所有索引数据添加一个时间元数据信息,构建了更加详细的集群索引元数据信息,用户在实际查询时候,根据查询时间范围条件,获取索引列表,然后使用索引列表进行计算查询得到准确索引列表,显著提高海量日志的搜索效率。
13.进一步地,所述s1步骤中,所述时间元数据信息添加的方法包括:
14.新建周期性任务并运行,查询分析elasticsearch集群当前所有所述索引数据;通过桶聚合获取每个所述索引数据date字段的最值,并添加到所述时间元数据信息中。
15.具体地,通过elasticsearch的_cat/indices接口,获取集群当前所有索引列表;
利用_cat/aliases接口,获取每个索引别名和is_write_index信息;利用max_bucket、min_bucket桶聚合获取每个索引date字段的最值max_date、min_date,需要注意,is_write_index为true的索引不需要计算max_date,因为该索引中最新日志仍然在不断写入。
16.进一步地,所述s1步骤中,所述保存方法包括:
17.利用redis hash结构,将索引别名设置为redis key、将实际索引名称设置为hash key、将具体所述元数据信息设置为hash value。
18.进一步地,所述s3步骤中,所述语法计算的方法包括:利用elasticsaerch multi-target语法,将全部所述索引列表减去不符合时间范围条件的同步miss_list得到同步准确索引列表。
19.具体地,根据time_range、min_date、max_date计算不符合时间条件的索引列表miss_list,利用elasticsaerch multi-target语法,查询同步索引准确范围为全部索引列表减去不符合条件的索引列表miss_list(real_list=all_list-miss_list)。
20.进一步地,所述s4步骤中,所述组合计算的方法包括:
21.根据不符合时间范围条件的所述异步miss_list:将全部所述索引列表减去不符合时间范围条件的所述异步miss_list得到所述异步准确索引列表1;
22.或根据符合时间范围条件的所述异步hit_list:将符合时间范围条件的所述异步hit_list与所述未来索引feture_list组合得到所述异步准确索引列表2。
23.进一步地,所述s4步骤中,所述未来索引feture_list为统计任务间隔时间内滚动出来新的符合条件的索引。
24.上述通过添加未来索引feture_list可以估计未来索引时间元数据,构建更加完善的集群索引元数据信息,保证数据不被遗漏,提高数据搜索效率。
25.第二方面,本发明公开了一种加速elasticsearch搜索的装置,包括:
26.时间元数据模块:对所有索引数据添加一个时间元数据信息,并将所述时间元数据信息保存到redis数据库,生成索引列表;
27.判断模块:根据客户端请求,获取用户要搜索的日志时间范围,并判断其为同步查询还是异步查询;
28.同步查询模块:若为所述同步查询,利用elasticsearch_msearch接口搜索所述索引列表,并计算不符合时间范围条件的同步miss_list,通过语法计算得到同步准确索引列表;
29.异步查询模块:若为所述异步查询,利用elasticsearch_async_search接口搜索所述索引列表,并分别计算符合时间范围条件的异步hit_list和不符合时间范围条件的异步miss_list,添加未来索引feture_list,通过组合得到异步准确索引列表;
30.结果返回模块:将查询结果返回给所述客户端。
31.第三方面,本发明公开了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如第一方面所述加速elasticsearch搜索的方法的步骤。
32.第四方面,本发明公开了一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述加速elasticsearch搜索的方法的步骤。
33.与现有技术相比,本发明的有益效果在于:
34.本发明通过构建更加详细的索引级别元数据,提高海量日志搜索效率,显著降低慢查询、查询超时出现频率;通过本发明的搜索方法,用户可以根据自身业务,灵活调整扩展索引时间元数据信息,通过计算时间元数据信息,估计未来索引列表,获取准确的更小范围的准确索引列表,从而提高查询效率。
附图说明
35.通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
36.图1为本发明实施例提供的加速elasticsearch搜索的方法流程示意图;
37.图2为本发明实施例提供的时间元数据添加及保存的方法流程示意图;
38.图3为本发明实施例提供的准确索引列表获取的方法流程图示意图;
39.图4为本发明实施例提供的加速elasticsearch搜索的装置示意图;
40.图5为本发明实施例提供的一种计算机设备的结构示意图。
具体实施方式
41.下面将结合附图和具体实施方式对本发明的技术方案进行清楚、完整地描述,但是本领域技术人员将会理解,下列所描述的实施例是本发明一部分实施例,而不是全部的实施例,仅用于说明本发明,而不应视为限制本发明的范围。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
42.为了更加清晰的对本发明中的技术方案进行阐述,下面以具体实施例的形式进行说明。
43.实施例
44.参照图1所示,本发明公开了一种加速elasticsearch搜索的方法,包括如下步骤:
45.s1、对elasticsearch所有索引数据添加一个时间元数据信息,并将所述时间元数据信息保存到redis数据库,生成索引列表;
46.s2、根据客户端请求,获取用户要搜索的日志时间范围,并判断其为同步查询还是异步查询;
47.s3、若为所述同步查询,利用elasticsearch_msearch接口搜索所述索引列表,并计算不符合时间范围条件的同步miss_list,通过语法计算得到同步准确索引列表;
48.s4、若为所述异步查询,利用elasticsearch_async_search接口搜索所述索引列表,并分别计算符合时间范围条件的异步hit_list和不符合时间范围条件的异步miss_list,添加未来索引feture_list,通过组合得到异步准确索引列表;
49.s5、将查询结果返回给所述客户端。
50.参阅图2所示,为本发明实施例的时间元数据添加及保存的方法,包括如下步骤:
51.在程序启动后,开启一个周期性任务,执行周期可以为1个小时;通过elasticsearch的_cat/indices接口获取elasticsearch集群当前所有索引列表,通过_cat/aliases接口获取每个索引别名和is_write_index信息;通过max_bucket、min_bucket
桶聚合获取每个索引date字段的最值max_date、min_date,并对所有索引数据添加一个时间元数据信息,需要注意的是is_write_index为true的索引不需要计算max_date,因为该索引中最新日志仍然在不断写入;利用redis hash结构,保存索引元数据,其中redis key为indexmeta_索引别名,hash key为实际索引名称,hash value为具体索引元数据。
52.参阅图3所示,为本实施例的准确索引列表获取的方法,包括如下步骤:
53.接收客户端请求,获取请求的日期筛选条件date_range;根据http请求url或根据http请求参数判断其为同步查询还是异步查询;
54.若为同步查询,则利用elasticsearch_msearch接口实现同步搜索,具体的,可以查询redis中保存的索引列表,根据time_range、min_date、max_date计算不符合时间范围条件的同步miss_list,利用elasticsearch multi

target语法,查询计算得到同步准确索引列表,具体的计算方式为将全部索引列表减去不符合时间范围条件的同步miss_list,得到同步准确索引列表;
55.若为异步查询,则利用elasticsearch_async_search接口实现异步搜索,具体地,可以查询redis中保存的索引列表,根据time_range、min_date、max_date计算符合时间范围条件的异步hit_list和不符合时间范围条件的异步miss_list;本发明的查询方法,因为异步查询接口不支持_msearch方式的索引列表参数,并且可能会出现同一别名索引包含非常多实际索引、索引列表拼接的查询uri超过http uri默认长度的情况,因此本发明的异步查询搜索方法需要统计复合、不符合时间范围条件的两种索引列表;
56.对于符合时间范围条件的异步hit_list,还可能出现统计任务间隔时间内滚动出来新的符合条件的索引的场景,根据业务场景,添加合理的满足条件的未来索引feture_list,组合成新的满足条件的异步准确索引列表,即异步hit_list和未来索引feture_list组合;
57.最后查询时,根据不符合时间范围条件的所述异步miss_list:将全部所述索引列表减去不符合时间范围条件的所述异步miss_list得到所述异步准确索引列表1;或根据符合时间范围条件的所述异步hit_list:将符合时间范围条件的所述异步hit_list与所述未来索引feture_list组合得到所述异步准确索引列表2,最终筛选出异步准确索引列表为异步准确索引列表1,异步准确索引列表2或者是原始别名。
58.将查询结果返回给所述客户端。
59.另外,本发明还提供了加速elasticsearch搜索的装置,如图4所示,具体包括:
60.时间元数据模块:对所有索引数据添加一个时间元数据信息,并将所述时间元数据信息保存到redis数据库,生成索引列表;
61.判断模块:根据客户端请求,获取用户要搜索的日志时间范围,并判断其为同步查询还是异步查询;
62.同步查询模块:若为所述同步查询,利用elasticsearch_msearch接口搜索所述索引列表,并计算不符合时间范围条件的同步miss_list,通过语法计算得到同步准确索引列表;
63.异步查询模块:若为所述异步查询,利用elasticsearch_async_search接口搜索所述索引列表,并分别计算符合时间范围条件的异步hit_list和不符合时间范围条件的异步miss_list,添加未来索引feture_list,通过组合得到异步准确索引列表;
64.结果返回模块:将查询结果返回给所述客户端。
65.该系统主要由上述五个模块构成,通过该系统的搭建很好的实现同时挂载同一个文件系统可实现并行操作的目的。
66.具体实施时,以上各个模块可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
67.图5为本发明公开的一种计算机设备的结构示意图。参考图5所示,该计算机设备400,至少包括存储器402和处理器401;所述存储器402通过通信总线403和处理器连接,用于存储所述处理器401可执行的计算机指令,所述处理器301用于从所述存储器402读取计算机指令以实现上述实施例所述的加速elasticsearch搜索的方法的步骤。
68.对于上述装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本公开方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
69.适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、媒介和存储器设备,例如包括半导体存储器设备(例如eprom、eeprom和闪存设备)、磁盘(例如内部磁盘或可移动盘)、磁光盘以及cd rom和dvd-rom盘。处理器和存储器可由专用逻辑电路补充或并入专用逻辑电路中。
70.最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献