一种基于ES高效自动同步可配置的搜索方法及系统转让专利

申请号 : CN202010854323.2

文献号 : CN111954038B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 汪纬

申请人 : 湖南快乐阳光互动娱乐传媒有限公司

摘要 :

本发明公开了一种基于ES高效自动同步可配置的搜索方法及系统,方法包括:获取用户查询媒资视频数据的请求;基于请求,判断是否已配置使用ES,若否,则:查询数据库;判断请求时间是否连续预设次数大于预设时间,若是,则:全量更新查询数据到ES,设置redis分布式锁;在更新完成时,释放所述redis分布式锁;设置媒资视频数据已配置使用ES;监听数据库视频表、关联表的变化,得到视频id;获取redis分布式锁,通过监听视频id查询媒资视频数据,并将查询到的媒资视频数据同步至ES中。本发明能够提升用户体验,提高生产效率。

权利要求 :

1.一种基于ES高效自动同步可配置的搜索方法,其特征在于,包括:获取用户查询媒资视频数据的请求;

基于所述请求,判断是否已配置使用ES,若否,则:查询数据库;

判断请求时间是否连续预设次数大于预设时间,若是,则:全量更新查询数据到ES,设置redis分布式锁;

在更新完成时,释放所述redis分布式锁;

设置媒资视频数据已配置使用ES;

监听数据库视频表、关联表的变化,得到视频id;

获取所述redis分布式锁,通过监听所述视频id查询媒资视频数据,并将查询到的媒资视频数据同步至ES中;其中,所述ES为Elasticsearch搜索与数据分析引擎。

2.根据权利要求1所述的方法,其特征在于,还包括:当基于所述请求,判断已配置使用ES时,基于所述请求查询ES。

3.根据权利要求1所述的方法,其特征在于,所述判断请求时间是否连续预设次数大于预设时间,包括:

判断请求时间是否连续5次大于5秒。

4.一种基于ES高效自动同步可配置的搜索系统,其特征在于,包括:第一获取模块,用于获取用户查询媒资视频数据的请求;

第一判断模块,用于基于所述请求,判断是否已配置使用ES;

第一查询模块,用于当基于所述请求,判断未配置使用ES时,查询数据库;

第二判断模块,用于判断请求时间是否连续预设次数大于预设时间;

更新模块,用于当请求时间连续预设次数大于预设时间时,全量更新查询数据到ES,设置redis分布式锁;

释放模块,用于在更新完成时,释放所述redis分布式锁;

设置模块,用于设置媒资视频数据已配置使用ES;

监听模块,用于监听数据库视频表、关联表的变化,得到视频id;

同步模块,用于获取所述redis分布式锁,通过监听所述视频id查询媒资视频数据,并将查询到的媒资视频数据同步至ES中;其中,所述ES为Elasticsearch搜索与数据分析引擎。

5.根据权利要求4所述的系统,其特征在于,还包括:第二查询模块,用于当基于所述请求,判断已配置使用ES时,基于所述请求查询ES。

6.根据权利要求4所述的系统,其特征在于,所述第二判断模块具体用于:判断请求时间是否连续5次大于5秒。

说明书 :

一种基于ES高效自动同步可配置的搜索方法及系统

技术领域

[0001] 本发明涉及数据处理技术领域,尤其涉及一种基于ES(Elasticsearch,分布式、高扩展、高实时的搜索与数据分析引擎)高效自动同步可配置的搜索方法及系统。

背景技术

[0002] 随着系统数据量越来越大,直接在数据库中查询所需的数据越来越慢,这时需要引进搜索引擎,目前大都采用手动的方式同步数据进ES中,需要修改大量代码,无法做到自
动同步可配置。
[0003] 因此,如何做到无缝切换,前端无感知,后台自动根据需要切换至搜索引擎,无需大量修改现有代码,能快速帮助用户检索出希望查询的数据,减少用户等待时间,提升用户
体验,提高生产效率,是一项亟待解决的问题。

发明内容

[0004] 有鉴于此,本发明提供了一种基于ES高效自动同步可配置的搜索方法,能够做到无缝切换,前端无感知,后台自动根据需要切换至搜索引擎,无需大量修改现有代码,能快
速帮助用户检索出希望查询的数据,减少用户等待时间,提升了用户体验,提高了生产效
率。
[0005] 本发明提供了一种基于ES高效自动同步可配置的搜索方法,包括:
[0006] 获取用户查询媒资视频数据的请求;
[0007] 基于所述请求,判断是否已配置使用ES,若否,则:
[0008] 查询数据库;
[0009] 判断请求时间是否连续预设次数大于预设时间,若是,则:
[0010] 全量更新查询数据到ES,设置redis分布式锁;
[0011] 在更新完成时,释放所述redis分布式锁;
[0012] 设置媒资视频数据已配置使用ES;
[0013] 监听数据库视频表、关联表的变化,得到视频id;
[0014] 获取所述redis分布式锁,通过监听所述视频id查询媒资视频数据,并将查询到的媒资视频数据同步至ES中。
[0015] 优选地,所述方法还包括:
[0016] 当基于所述请求,判断已配置使用ES时,基于所述请求查询ES。
[0017] 优选地,所述判断请求时间是否连续预设次数大于预设时间,包括:
[0018] 判断请求时间是否连续5次大于5秒。
[0019] 一种基于ES高效自动同步可配置的搜索系统,包括:
[0020] 第一获取模块,用于获取用户查询媒资视频数据的请求;
[0021] 第一判断模块,用于基于所述请求,判断是否已配置使用ES;
[0022] 第一查询模块,用于当基于所述请求,判断未配置使用ES时,查询数据库;
[0023] 第二判断模块,用于判断请求时间是否连续预设次数大于预设时间;
[0024] 更新模块,用于当请求时间连续预设次数大于预设时间时,全量更新查询数据到ES,设置redis分布式锁;
[0025] 释放模块,用于在更新完成时,释放所述redis分布式锁;
[0026] 设置模块,用于设置媒资视频数据已配置使用ES;
[0027] 监听模块,用于监听数据库视频表、关联表的变化,得到视频id;
[0028] 同步模块,用于获取所述redis分布式锁,通过监听所述视频id查询媒资视频数据,并将查询到的媒资视频数据同步至ES中。
[0029] 优选地,所述系统还包括:
[0030] 第二查询模块,用于获当基于所述请求,判断已配置使用ES时,基于所述请求查询ES。
[0031] 优选地,所述第二判断模块具体用于:
[0032] 判断请求时间是否连续5次大于5秒。
[0033] 综上所述,本发明公开了一种基于ES高效自动同步可配置的搜索方法,首先获取用户查询媒资视频数据的请求,然后基于请求,判断是否已配置使用ES,若否,则查询数据
库,然后判断请求时间是否连续预设次数大于预设时间,若是,则:全量更新查询数据到ES,
设置redis分布式锁;在更新完成时,释放redis分布式锁;设置媒资视频数据已配置使用
ES,监听数据库视频表、关联表的变化,得到视频id;获取redis分布式锁,通过监听视频id
查询媒资视频数据,并将查询到的媒资视频数据同步至ES中。本发明能够做到无缝切换,前
端无感知,后台自动根据需要切换至搜索引擎,无需大量修改现有代码,能快速帮助用户检
索出希望查询的数据,减少用户等待时间,提升了用户体验,提高了生产效率。

附图说明

[0034] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以
根据这些附图获得其他的附图。
[0035] 图1为本发明公开的一种基于ES高效自动同步可配置的搜索方法实施例1的流程图;
[0036] 图2为本发明公开的一种基于ES高效自动同步可配置的搜索方法实施例2的流程图;
[0037] 图3为本发明公开的一种基于ES高效自动同步可配置的搜索方法实施例3的流程图;
[0038] 图4为本发明公开的一种基于ES高效自动同步可配置的搜索系统实施例1的结构示意图;
[0039] 图5为本发明公开的一种基于ES高效自动同步可配置的搜索系统实施例2的结构示意图;
[0040] 图6为本发明公开的一种基于ES高效自动同步可配置的搜索系统实施例3的结构示意图。

具体实施方式

[0041] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于
本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他
实施例,都属于本发明保护的范围。
[0042] 如图1所示,为本发明公开的一种基于ES高效自动同步可配置的搜索方法实施例1的流程图,所述方法可以包括以下步骤:
[0043] S101、获取用户查询媒资视频数据的请求;
[0044] 当用户需要查询媒资视频数据时,首先获取用户查询媒资视频数据的请求。
[0045] S102、基于请求,判断是否已配置使用ES,若否,则进入S103:
[0046] 当获取到用户查询媒资视频数据的请求后,进一步根据获取到的请求判断是否已经配置使用ES。
[0047] S103、查询数据库;
[0048] 当基于请求,判断未配置使用ES时,查询数据库。其中,数据库可以为Mysql数据库。
[0049] S104、判断请求时间是否连续预设次数大于预设时间,若是,则进入S105:
[0050] 然后,判断请求时间是否连续预设次数大于预设时间。
[0051] S105、全量更新查询数据到ES,设置redis分布式锁;
[0052] 当请求时间连续预设次数大于预设时间时,全量更新表数据库,全量更新查询数据到ES,设置redis分布式锁。
[0053] S106、在更新完成时,释放所述redis分布式锁;
[0054] 在更新完成时,将redis分布式锁释放。
[0055] S107、设置媒资视频数据已配置使用ES;
[0056] 然后,设置媒资视频数据为配置使用ES。
[0057] S108、监听数据库视频表、关联表的变化,得到视频id;
[0058] 然后,监听数据库视频表、关联表的变化,如,增加、删除、改变;得到视频id。
[0059] S109、获取redis分布式锁,通过监听视频id查询媒资视频数据,并将查询到的媒资视频数据同步至ES中。
[0060] 然后,获取redis分布式锁,通过监听视频id查询媒资视频数据,并将查询到的媒资视频数据同步至ES中。当用户再次查询数据时,会自动处理数据权限逻辑,拼装查询条
件、处理排序生成ES查询语句进行查询。
[0061] 综上所述,在上述实施例中,首先获取用户查询媒资视频数据的请求,然后基于请求,判断是否已配置使用ES,若否,则查询数据库,然后判断请求时间是否连续预设次数大
于预设时间,若是,则:全量更新查询数据到ES,设置redis分布式锁;在更新完成时,释放
redis分布式锁;设置媒资视频数据已配置使用ES,监听数据库视频表、关联表的变化,得到
视频id;获取redis分布式锁,通过监听视频id查询媒资视频数据,并将查询到的媒资视频
数据同步至ES中。能够做到无缝切换,前端无感知,后台自动根据需要切换至搜索引擎,无
需大量修改现有代码,能快速帮助用户检索出希望查询的数据,减少用户等待时间,提升了
用户体验,提高了生产效率。
[0062] 如图2所示,为本发明公开的一种基于ES高效自动同步可配置的搜索方法实施例2的流程图,所述方法可以包括以下步骤:
[0063] S201、获取用户查询媒资视频数据的请求;
[0064] 当用户需要查询媒资视频数据时,首先获取用户查询媒资视频数据的请求。
[0065] S202、基于请求,判断是否已配置使用ES,若否,则进入S203,若是,则进入S210:
[0066] 当获取到用户查询媒资视频数据的请求后,进一步根据获取到的请求判断是否已经配置使用ES。
[0067] S203、查询数据库;
[0068] 当基于请求,判断未配置使用ES时,查询数据库。其中,数据库可以为Mysql数据库。
[0069] S204、判断请求时间是否连续预设次数大于预设时间,若是,则进入S205:
[0070] 然后,判断请求时间是否连续预设次数大于预设时间。
[0071] S205、全量更新查询数据到ES,设置redis分布式锁;
[0072] 当请求时间连续预设次数大于预设时间时,全量更新表数据库,全量更新查询数据到ES,设置redis分布式锁。
[0073] S206、在更新完成时,释放所述redis分布式锁;
[0074] 在更新完成时,将redis分布式锁释放。
[0075] S207、设置媒资视频数据已配置使用ES;
[0076] 然后,设置媒资视频数据为配置使用ES。
[0077] S208、监听数据库视频表、关联表的变化,得到视频id;
[0078] 然后,监听数据库视频表、关联表的变化,如,增加、删除、改变;得到视频id。
[0079] S209、获取redis分布式锁,通过监听视频id查询媒资视频数据,并将查询到的媒资视频数据同步至ES中。
[0080] 然后,获取redis分布式锁,通过监听视频id查询媒资视频数据,并将查询到的媒资视频数据同步至ES中。当用户再次查询数据时,会自动处理数据权限逻辑,拼装查询条
件、处理排序生成ES查询语句进行查询。
[0081] S210、基于请求查询ES。
[0082] 当基于请求,判断已配置使用ES时,基于请求查询ES。
[0083] 如图3所示,为本发明公开的一种基于ES高效自动同步可配置的搜索方法实施例3的流程图,所述方法可以包括以下步骤:
[0084] S301、获取用户查询媒资视频数据的请求;
[0085] 当用户需要查询媒资视频数据时,首先获取用户查询媒资视频数据的请求。
[0086] S302、基于请求,判断是否已配置使用ES,若否,则进入S303,若是,则进入S310:
[0087] 当获取到用户查询媒资视频数据的请求后,进一步根据获取到的请求判断是否已经配置使用ES。
[0088] S303、查询数据库;
[0089] 当基于请求,判断未配置使用ES时,查询数据库。其中,数据库可以为Mysql数据库。
[0090] S304、判断请求时间是否连续5次大于5秒,若是,则进入S305:
[0091] 然后,判断请求时间是否连续预设次数大于预设时间。具体的,可以判断请求时间是否连续5次大于5秒。
[0092] S305、全量更新查询数据到ES,设置redis分布式锁;
[0093] 当请求时间连续5次大于5秒时,全量更新表数据库,全量更新查询数据到ES,设置redis分布式锁。
[0094] S306、在更新完成时,释放所述redis分布式锁;
[0095] 在更新完成时,将redis分布式锁释放。
[0096] S307、设置媒资视频数据已配置使用ES;
[0097] 然后,设置媒资视频数据为配置使用ES。
[0098] S308、监听数据库视频表、关联表的变化,得到视频id;
[0099] 然后,监听数据库视频表、关联表的变化,如,增加、删除、改变;得到视频id。
[0100] S309、获取redis分布式锁,通过监听视频id查询媒资视频数据,并将查询到的媒资视频数据同步至ES中。
[0101] 然后,获取redis分布式锁,通过监听视频id查询媒资视频数据,并将查询到的媒资视频数据同步至ES中。当用户再次查询数据时,会自动处理数据权限逻辑,拼装查询条
件、处理排序生成ES查询语句进行查询。
[0102] S310、基于请求查询ES。
[0103] 当基于请求,判断已配置使用ES时,基于请求查询ES。
[0104] 如图4所示,为本发明公开的一种基于ES高效自动同步可配置的搜索系统实施例1的结构示意图,所述系统可以包括:
[0105] 第一获取模块401,用于获取用户查询媒资视频数据的请求;
[0106] 当用户需要查询媒资视频数据时,首先获取用户查询媒资视频数据的请求。
[0107] 第一判断模块402,用于基于请求,判断是否已配置使用ES;
[0108] 当获取到用户查询媒资视频数据的请求后,进一步根据获取到的请求判断是否已经配置使用ES。
[0109] 第一查询模块403,用于当基于所述请求,判断未配置使用ES时,查询数据库;
[0110] 当基于请求,判断未配置使用ES时,查询数据库。其中,数据库可以为Mysql数据库。
[0111] 第二判断模块404,用于判断请求时间是否连续预设次数大于预设时间;
[0112] 然后,判断请求时间是否连续预设次数大于预设时间。
[0113] 更新模块405,用于当请求时间连续预设次数大于预设时间时,全量更新查询数据到ES,设置redis分布式锁;
[0114] 当请求时间连续预设次数大于预设时间时,全量更新表数据库,全量更新查询数据到ES,设置redis分布式锁。
[0115] 释放模块406,用于在更新完成时,释放所述redis分布式锁;
[0116] 在更新完成时,将redis分布式锁释放。
[0117] 设置模块407,用于设置媒资视频数据已配置使用ES;
[0118] 然后,设置媒资视频数据为配置使用ES。
[0119] 监听模块408,用于监听数据库视频表、关联表的变化,得到视频id;
[0120] 然后,监听数据库视频表、关联表的变化,如,增加、删除、改变;得到视频id。
[0121] 同步模块409,用于获取redis分布式锁,通过监听视频id查询媒资视频数据,并将查询到的媒资视频数据同步至ES中。
[0122] 然后,获取redis分布式锁,通过监听视频id查询媒资视频数据,并将查询到的媒资视频数据同步至ES中。当用户再次查询数据时,会自动处理数据权限逻辑,拼装查询条
件、处理排序生成ES查询语句进行查询。
[0123] 综上所述,在上述实施例中,首先获取用户查询媒资视频数据的请求,然后基于请求,判断是否已配置使用ES,若否,则查询数据库,然后判断请求时间是否连续预设次数大
于预设时间,若是,则:全量更新查询数据到ES,设置redis分布式锁;在更新完成时,释放
redis分布式锁;设置媒资视频数据已配置使用ES,监听数据库视频表、关联表的变化,得到
视频id;获取redis分布式锁,通过监听视频id查询媒资视频数据,并将查询到的媒资视频
数据同步至ES中。能够做到无缝切换,前端无感知,后台自动根据需要切换至搜索引擎,无
需大量修改现有代码,能快速帮助用户检索出希望查询的数据,减少用户等待时间,提升了
用户体验,提高了生产效率。
[0124] 如图5所示,为本发明公开的一种基于ES高效自动同步可配置的搜索系统实施例2的结构示意图,所述系统可以包括:
[0125] 第一获取模块501,用于获取用户查询媒资视频数据的请求;
[0126] 当用户需要查询媒资视频数据时,首先获取用户查询媒资视频数据的请求。
[0127] 第一判断模块502,用于基于请求,判断是否已配置使用ES;
[0128] 当获取到用户查询媒资视频数据的请求后,进一步根据获取到的请求判断是否已经配置使用ES。
[0129] 第一查询模块503,用于当基于请求,判断未配置使用ES时,查询数据库;
[0130] 当基于请求,判断未配置使用ES时,查询数据库。其中,数据库可以为Mysql数据库。
[0131] 第二判断模块504,用于判断请求时间是否连续预设次数大于预设时间;
[0132] 然后,判断请求时间是否连续预设次数大于预设时间。
[0133] 更新模块505,用于当请求时间连续预设次数大于预设时间时,全量更新查询数据到ES,设置redis分布式锁;
[0134] 当请求时间连续预设次数大于预设时间时,全量更新表数据库,全量更新查询数据到ES,设置redis分布式锁。
[0135] 释放模块506,用于在更新完成时,释放所述redis分布式锁;
[0136] 在更新完成时,将redis分布式锁释放。
[0137] 设置模块507,用于设置媒资视频数据已配置使用ES;
[0138] 然后,设置媒资视频数据为配置使用ES。
[0139] 监听模块508,用于监听数据库视频表、关联表的变化,得到视频id;
[0140] 然后,监听数据库视频表、关联表的变化,如,增加、删除、改变;得到视频id。
[0141] 同步模块509,用于获取redis分布式锁,通过监听视频id查询媒资视频数据,并将查询到的媒资视频数据同步至ES中。
[0142] 然后,获取redis分布式锁,通过监听视频id查询媒资视频数据,并将查询到的媒资视频数据同步至ES中。当用户再次查询数据时,会自动处理数据权限逻辑,拼装查询条
件、处理排序生成ES查询语句进行查询。
[0143] 第二查询模块510,用于当基于请求,判断已配置使用ES时,基于所述请求查询ES。
[0144] 当基于请求,判断已配置使用ES时,基于请求查询ES。
[0145] 如图6所示,为本发明公开的一种基于ES高效自动同步可配置的搜索系统实施例3的结构示意图,所述系统可以包括:
[0146] 第一获取模块601,用于获取用户查询媒资视频数据的请求;
[0147] 当用户需要查询媒资视频数据时,首先获取用户查询媒资视频数据的请求。
[0148] 第一判断模块602,用于基于请求,判断是否已配置使用ES;
[0149] 当获取到用户查询媒资视频数据的请求后,进一步根据获取到的请求判断是否已经配置使用ES。
[0150] 第一查询模块603,用于当基于请求,判断未配置使用ES时,查询数据库;
[0151] 当基于请求,判断未配置使用ES时,查询数据库。其中,数据库可以为Mysql数据库。
[0152] 第二判断模块604,用于判断请求时间是否连续5次大于5秒;
[0153] 然后,判断请求时间是否连续预设次数大于预设时间。具体的,可以判断请求时间是否连续5次大于5秒。
[0154] 更新模块605,用于当请求时间连续预设次数大于预设时间时,全量更新查询数据到ES,设置redis分布式锁;
[0155] 当请求时间连续预设次数大于预设时间时,全量更新表数据库,全量更新查询数据到ES,设置redis分布式锁。
[0156] 释放模块606,用于在更新完成时,释放所述redis分布式锁;
[0157] 在更新完成时,将redis分布式锁释放。
[0158] 设置模块607,用于设置媒资视频数据已配置使用ES;
[0159] 然后,设置媒资视频数据为配置使用ES。
[0160] 监听模块608,用于监听数据库视频表、关联表的变化,得到视频id;
[0161] 然后,监听数据库视频表、关联表的变化,如,增加、删除、改变;得到视频id。
[0162] 同步模块609,用于获取redis分布式锁,通过监听视频id查询媒资视频数据,并将查询到的媒资视频数据同步至ES中。
[0163] 然后,获取redis分布式锁,通过监听视频id查询媒资视频数据,并将查询到的媒资视频数据同步至ES中。当用户再次查询数据时,会自动处理数据权限逻辑,拼装查询条
件、处理排序生成ES查询语句进行查询。
[0164] 第二查询模块610,用于当基于请求,判断已配置使用ES时,基于所述请求查询ES。
[0165] 当基于请求,判断已配置使用ES时,基于请求查询ES。
[0166] 本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置
而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说
明即可。
[0167] 专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和
软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些
功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业
技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应
认为超出本发明的范围。
[0168] 结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存
储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD‑ROM、或技术
领域内所公知的任意其它形式的存储介质中。
[0169] 对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的
一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明
将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一
致的最宽的范围。