ES重建索引的方法、存储介质技术

技术编号:24707920 阅读:67 留言:0更新日期:2020-06-30 23:57
本发明专利技术提供一种ES重建索引的方法、存储介质,方法包括:创建一等待触发消费的消费组线程;对应旧索引的索引操作同步写入所述消费组;配置新索引的设置和映射字段;重建索引;触发所述消费组进行消费,将消费组内的索引操作消费到新建的索引中;当所述消费组的消费延迟低于阈值,则将旧索引与其别名的关联切换为新索引与所述别名的关联。本发明专利技术能够实现不停服的进行ES索引切换,给用户带来近乎无感的体验;同时,本发明专利技术还具有实施高效、稳健且成本低的特点。

【技术实现步骤摘要】
ES重建索引的方法、存储介质
本专利技术涉及数据库搜索领域,具体涉及ES重建索引的方法、存储介质。
技术介绍
随着移动互联网的蓬勃发展,业务系统面临大数据复杂搜索的场景,而传统的关系型数据库MySQL已无法适用大数据的复杂条件搜索场景。Elasticsearch是一种基于Lucene底层技术的分布式全文搜索引擎,提供了近实时的复杂搜索条件解决方案。具体原理分为以下几个步骤:首先用户将数据提交到Elasticsearch数据库中,再通过分词控制器将对应的语句分词,将其权重和分词结果一并存入,利用倒排索引的原理,当用户搜索数据时,再根据权重结果排名,打分,将搜索结果返回给用户。Elasticsearch中的数据存储在索引中,每个索引一般需要预先设置好索引的设置setting以及字段对应的映射类型。然而,elasticsearch索引的字段映射类型一旦创建之后只能增加字段,不能对现有字段进行更改。在实际线上业务场景中,经常面临字段类型设置不正确,以及线上elasticsearch的索引存在脏数据的情况。在处理这些场景时,不得不进行重建索引的操作。为了尽可能少的影响业务,现有的技术方案是通过重建索引以及别名切换,再后期追加数据的方式来重建索引,具体的方式为:(1)建立新索引映射类型和相关的设置;(2)停止往旧索引插入或者修改、删除数据;(3)通过重建索引reindex操作,将旧索引的数据拷贝到新索引中;(4)通过别名删除与旧索引的关联,并将别名关联到新索引;(5)进行数据的追加。然而,在该种方法中,从第二步骤开始,旧的索引的数据已经不再更新。因此,用户查询到的一直是旧数据,要等到第五步骤操作完成之后,用户才可以查询到最新的数据。这在旧索引数据量不大的情况下可能耗时几分钟,但是在旧索引数据量有几百G,甚至几T的情况下,用户可能要等几个小时才能查询到最新的数据,这在互联网中实时性要求高的C端搜索业务是不能容忍的。因此,有必要针对重建索引导致用户可能较长时间搜索不到最新数据,给用户带来不良体验的问题提供一个行之有效地解决方案。
技术实现思路
本专利技术所要解决的技术问题是:提供ES重建索引的方法、存储介质,实现操作过程对于用户无感,从而显著提升用户体验。为了解决上述技术问题,本专利技术采用的技术方案为:创建一等待触发消费的消费组线程;配置新索引的设置和映射字段后,对应旧索引的索引操作同步写入所述消费组;重建索引;触发所述消费组进行消费,将消费组内的索引操作消费到新建的索引中;当所述消费组的消费延迟低于阈值,则将旧索引与其别名的关联切换为新索引与所述别名的关联。本专利技术提供的另一个技术方案为:一种计算机可读存储介质,其上存储有计算机程序,所述程序在被处理器执行时,能够实现上述ES重建索引的方法所包含的步骤。本专利技术的有益效果在于:针对重建索引导致用户较长时间无法使用索引库的问题,本专利技术基于消息队列幂等消费的前提,利用消息队列双消费组的方式,实现无需停止旧索引正常使用地重建索引,给用户带来近乎无感的体验。附图说明图1为本专利技术实施例一种ES重建索引的方法的流程示意图;图2为本专利技术实施例一一种ES重建索引的方法的流程示意图标号说明。具体实施方式为详细说明本专利技术的
技术实现思路
、所实现目的及效果,以下结合实施方式并配合附图予以说明。本专利技术最关键的构思在于:不停止旧索引的使用,通过双消费组监听旧索引的索引操作,在新索引重建后,通过消费组进行追加数据,给用户带来近乎无感的体验。本专利技术涉及的技术术语解释:请参照图1,本专利技术提供ES重建索引的方法,包括:创建一等待触发消费的消费组线程;对应旧索引的索引操作同步写入所述消费组;配置新索引的设置和映射字段;重建索引;触发所述消费组进行消费,将消费组内的索引操作消费到新建的索引中;当所述消费组的消费延迟低于阈值,则将旧索引与其别名的关联切换为新索引与所述别名的关联。从上述描述可知,本专利技术的有益效果在于:创建新的消费组监听对旧索引的索引操作事件,在建立新的满足需求的新索引的mapping后,无需停止往旧索引插入或者修改、删除数据(因此,用户仍然可以查询到最新的数据),通过reindex重建索引;当重建完成后,通过新的消费组消费其内的索引操作至新索引实现追加数据,当完全追加成功后,才进行别名的切换。上述的操作对于用户是无感的。进一步地,所述当所述消费组的消费延迟低于阈值,之后,还包括:停止所述消费组的消费行为;删除所述消费组和旧索引。由上述描述可知,在新索引重建成功可投入使用后,即删除消费组和旧索引,能够避免不必要的资源损耗。进一步地,所述对应旧索引的索引操作同步写入所述消费组,具体为:接收对应旧索引的索引操作指令;依据所述指令写入所述索引操作至旧索引,同时写入所述索引操作至所述消费组。由上述描述可知,重建新索引的过程以及新索引投入使用之前,旧索引都将维持正常工作,为用户提供良好体验。进一步地,所述配置新索引的设置和映射字段后,还包括:配置新索引的参数,所述参数对应修正索引中的脏数据。由上述描述可知,在新索引重建过程,能够通过新索引的参数配置,实现修正旧索引中的脏数据。进一步地,所述重建索引,具体为:拷贝旧索引的数据至新索引。由上述描述可知,通过旧索引数据的原样搬迁,维持旧索引的功能。进一步地,所述消费组为一个kafka主题或rabbitmq主题或actvemq主题的消息队列。由上述描述可知,支持多种类型的消息队列可供选择,更具灵活性。本专利技术提供的另一个技术方案为:一种计算机可读存储介质,其上存储有计算机程序,所述程序在被处理器执行时,能够实现下述ES重建索引的方法所包含的步骤:创建一等待触发消费的消费组线程;对应旧索引的索引操作同步写入所述消费组;配置新索引的设置和映射字段;重建索引;触发所述消费组进行消费,将消费组内的索引操作消费到新建的索引中;当所述消费组的消费延迟低于阈值,则将旧索引与其别名的关联切换为新索引与所述别名的关联。进一步地,所述当所述消费组的消费延迟低于阈值,之后,还包括:停止所述消费组的消费行为;删除所述消费组和旧索引。进一步地,所述对应旧索引的索引操作同步写入所述消费组,具体为:接收对应旧索引的索引操作指令;依据所述指令写入所述索引操作至旧索引,同时写入所述索引操作至所述消费组。进一步地,所述配置新索引的设置和映射字段后,还包括:配置新索引的参数,所述参数对应修正索引中的脏数据。进一步地,所述重建索引,具体为:拷贝旧索引的数据至新索引。进一步地,所述消费组为一个kafka主题或rabbitmq主题或actvemq主题本文档来自技高网
...

【技术保护点】
1.ES重建索引的方法,其特征在于,包括:/n创建一等待触发消费的消费组线程;/n对应旧索引的索引操作同步写入所述消费组;/n配置新索引的设置和映射字段;/n重建索引;/n触发所述消费组进行消费,将消费组内的索引操作消费到新建的索引中;/n当所述消费组的消费延迟低于阈值,则将旧索引与其别名的关联切换为新索引与所述别名的关联。/n

【技术特征摘要】
1.ES重建索引的方法,其特征在于,包括:
创建一等待触发消费的消费组线程;
对应旧索引的索引操作同步写入所述消费组;
配置新索引的设置和映射字段;
重建索引;
触发所述消费组进行消费,将消费组内的索引操作消费到新建的索引中;
当所述消费组的消费延迟低于阈值,则将旧索引与其别名的关联切换为新索引与所述别名的关联。


2.如权利要求1所述的ES重建索引的方法,其特征在于,所述当所述消费组的消费延迟低于阈值,之后,还包括:
停止所述消费组的消费行为;
删除所述消费组和旧索引。


3.如权利要求1所述的ES重建索引的方法,其特征在于,所述对应旧索引的索引操作同步写入所述消费组,具体为:
接收对应旧索引的索引操作指令;
依据...

【专利技术属性】
技术研发人员:刘德建林伟郭玉湖陈宏
申请(专利权)人:福建天泉教育科技有限公司
类型:发明
国别省市:福建;35

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1