本发明专利技术提供一种Elasticsearch搜索引擎索引构建方法及装置,包括利用Flink集群定时从数据库中导出全量索引目标数据,并创建新建索引库;近实时索引服务监听业务数据变更消息通知,从数据库中读取最新数据更新到现有索引库,同时检测批量索引构建是否进行,并将批量索引数据更新到新建索引库;将Elasticsearch索引进行别名切换,将索引目标指向新建索引库。与相关技术相比,本发明专利技术提供的Elasticsearch搜索引擎索引构建方法,其提高数据同步效率,确保了索引批处理构建过程中及构建后的数据一致性。构建后的数据一致性。构建后的数据一致性。
【技术实现步骤摘要】
Elasticsearch搜索引擎索引构建方法及装置
[0001]本专利技术涉及计算机
,尤其涉及一种Elasticsearch搜索引擎索引构建方法及装置。
技术介绍
[0002]Elasticsearch的索引,通常会基于Logstash同步技术,采用定时执行SQL语句的索引同步方案。此方案在跨多个业务数据源时处理复杂且同步效率低下,此外,定时执行机制在实时性方面得不到足够的保障,两次同步时间点之间的数据变更不能及时体现在索引中。
[0003]另一种常见的处理方式,是通过监听数据库日志变更消息(如MySql的binlog日志)方案进行同步,此方案确实可以解决实时性方面的不足,但是检索系统的单个文档,往往会横跨多个业务领域多个数据库实例和表,如典型的电商系统商品信息,不仅有商品的基本属性,还会包含其所属类别、卖家、评价、销量等信息,这些信息会分别存储在各自实体域对应的业务库中,单表的数据库变更日志,大大加大数据处理的复杂度,无法简单确定其影响的索引文档范围,比如:
[0004]大部分监听表中只有部分字段需纳入索引,未纳入索引范畴的字段变更同样会触发数据库变更日志,这部分变更日志的筛选识别如何处理,部分表字段的逻辑删除或者状态变更,是否会对整个文档的有效性产生影响,一对多或多对多关联的数据库变更日志,会产生多个关联表的多条数据变更记录,这些变更记录源源不断地产生,监听方无法得知某一事物的日志是否已全部获取,完整性无法保证。即便获取到的记录是完整的,映射到索引文档,不同的业务场景下,会对应不同的操作,这些操作难以统一处理。
[0005]因此,有必要提供一种新型的Elasticsearch搜索引擎索引构建方法及装置,以克服上述缺陷。
技术实现思路
[0006]本专利技术的目的在于提供一种新型的Elasticsearch搜索引擎索引构建方法,其提高数据同步效率,确保了索引批处理构建过程中及构建后的数据一致性。
[0007]为了达到上述目的,本专利技术提供一种Elasticsearch搜索引擎索引构建方法,包括:
[0008]利用Flink集群定时从数据库中导出全量索引目标数据,并创建新建索引库;
[0009]近实时索引服务监听业务数据变更消息通知,从数据库中读取最新数据更新到现有索引库,同时检测批量索引构建是否进行,并将批量索引数据更新到新建索引库;
[0010]将Elasticsearch索引进行别名切换,将索引目标指向新建索引库。
[0011]进一步,所述利用Flink集群定时从数据库中导出全量索引目标数据,并创建新建索引库包括:
[0012]给Flink集群制定任务计划时间点,通过Flink sql从数据库中导入全量索引目标
数据;
[0013]利用Flink流处理框架处理批任务对全量索引目标数据进行关联和统计处理,再通过Flink sql创建到新建索引库中。
[0014]进一步,所述近实时索引服务监听业务数据变更消息通知包括;
[0015]业务数据变更时,修改记录会写入数据,同时发送业务消息通知近实时索引服务,近实时索引服务订阅并监听此消息通知,作为后续索引更新的触发依据。
[0016]进一步,所述检测批量索引构建是否进行,并将批量索引数据更新到新建索引库包括:
[0017]当前批量索引正在构建中,批量索引数据是任务触发时的数据库快照数据,批量任务结束时的索引数据相对于当前更新的数据,近实时索引服务会将更新的数据暂存进Redis;
[0018]在批量索引任务构建完成后,暂存在Redis中的更新的数据回放到新建索引库中,批量任务过程中写入到新建索引库中的数据会被更新到最新状态;
[0019]当批量服务并没有在构建中,则数据直接同步到现有索引中。
[0020]进一步,所述将Elasticsearch索引进行别名切换,将索引目标指向新建索引库包括:
[0021]索引别名的变更管理根据当前批量索引构建任务的状态判断是否触发索引别名切换操作;
[0022]当批量索引构建任务未启动或正在进行中时,索引别名指向现有索引库,现有索引维护有当前数据的所有变更状态;
[0023]当批量索引构建任务结束且Redis暂存数据回放完成后,将索引别名指向新建索引库提供检索服务。
[0024]本专利技术另一发面还提供一种Elasticsearch搜索引擎索引构建装置,该装置应用上述Elasticsearch搜索引擎索引构建方法的步骤,包括近实时索引服务模块、数据库、Flink集群模块以及Redis模块;
[0025]近实时索引服务模块,用于监听Elasticsearch搜索引擎业务数据变更消息通知,
[0026]数据库,用于Elasticsearch搜索引擎业务数据的存储与管理;
[0027]Flink集群模块,用于读取数据库中的全量索引目标数据并建立新建索引库;
[0028]Redis模块,用于将近实时索引服务模块构建的批量索引任务进行暂存。
[0029]本专利技术还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述所述的Elasticsearch搜索引擎索引构建方法的步骤。
[0030]本专利技术还提供一种计算机终端,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述所述的Elasticsearch搜索引擎索引构建方法的步骤。
[0031]与相关技术相比较,本专利技术的Elasticsearch搜索引擎索引构建方法利用Flink流处理框架处理批任务,借助其集群管理和协调能力,使用通用SQL语句编写任务处理流程,解决了一般数据同步方案所面临的效率低下、处理过程繁杂的问题,同时,结合利用Redis队列,对索引构建过程中的实时数据进行回放更新,有效解决了数据实时同步的难题,确保
了索引批处理构建过程中及构建后的数据一致性。
附图说明
[0032]为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图,其中:
[0033]图1为本专利技术Elasticsearch搜索引擎索引构建方法的流程图;
[0034]图2为本专利技术Elasticsearch搜索引擎索引构建方法的索引变更示意图。
具体实施方式
[0035]下面将对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本专利技术的一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本专利技术保护的范围。
[0036]请参阅图1,本专利技术提供一种Elasticsearch搜索引擎索引构建方本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种Elasticsearch搜索引擎索引构建方法,其特征在于,包括:利用Flink集群定时从数据库中导出全量索引目标数据,并创建新建索引库;近实时索引服务监听业务数据变更消息通知,从数据库中读取最新数据更新到现有索引库,同时检测批量索引构建是否进行,并将批量索引数据更新到新建索引库;将Elasticsearch索引进行别名切换,将索引目标指向新建索引库。2.根据权利要求1所述的Elasticsearch搜索引擎索引构建方法,其特征在于,所述利用Flink集群定时从数据库中导出全量索引目标数据,并创建新建索引库包括:给Flink集群制定任务计划时间点,通过Flink sql从数据库中导入全量索引目标数据;利用Flink流处理框架处理批任务对全量索引目标数据进行关联和统计处理,再通过Flink sql创建到新建索引库中。3.根据权利要求2所述的Elasticsearch搜索引擎索引构建方法,其特征在于,所述近实时索引服务监听业务数据变更消息通知包括;业务数据变更时,修改记录会写入数据,同时发送业务消息通知近实时索引服务,近实时索引服务订阅并监听此消息通知,作为后续索引更新的触发依据。4.根据权利要求1所述的Elasticsearch搜索引擎索引构建方法,其特征在于,所述检测批量索引构建是否进行,并将批量索引数据更新到新建索引库包括:当前批量索引正在构建中,批量索引数据是任务触发时的数据库快照数据,批量任务结束时的索引数据相对于当前更新的数据,近实时索引服务会将更新的数据暂存进Redis;在批量索引任务构建完成后,暂存在Redis中的更新的数据回放到新建索引库中,批量任务过程中写入到新建索引库中的数据会被更新到最新状态;当批量服务并没有在构建中,则数据直接同步到现有索引...
【专利技术属性】
技术研发人员:申斌,凡广文,
申请(专利权)人:湖南惠农科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。