CN110609865B - 一种信息同步方法,装置及系统 - Google Patents

一种信息同步方法,装置及系统 Download PDF

Info

Publication number
CN110609865B
CN110609865B CN201810532858.0A CN201810532858A CN110609865B CN 110609865 B CN110609865 B CN 110609865B CN 201810532858 A CN201810532858 A CN 201810532858A CN 110609865 B CN110609865 B CN 110609865B
Authority
CN
China
Prior art keywords
index
data
updated
document
update
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810532858.0A
Other languages
English (en)
Other versions
CN110609865A (zh
Inventor
李军浩
赵帅
王亮
巩仔明
邱慧
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hefei Youquan Information Technology Co ltd
Original Assignee
Youxinpai Beijing Information Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Youxinpai Beijing Information Technology Co ltd filed Critical Youxinpai Beijing Information Technology Co ltd
Priority to CN201810532858.0A priority Critical patent/CN110609865B/zh
Publication of CN110609865A publication Critical patent/CN110609865A/zh
Application granted granted Critical
Publication of CN110609865B publication Critical patent/CN110609865B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例示出一种信息同步方法,装置及系统,所述方法括:接收执行消息,确定所述执行消息对应的索引的重建标识位;如果所述重建标识位为正在重建,继续创建索引,将所述更新消息缓存于Redis队列;完成所述索引创建,遍历Redis队列,调取所述更新消息,实现Elasticsearch搜索引擎中的数据与查询数据库中数据的同步。本申请实施例示出的方法,将更新消息缓存于Redis队列中,待重建索引完成后将缓存中取出来再消费到新的索引里面,保证Elasticsearch搜索引擎中的数据与查询数据库中数据最终一致性。

Description

一种信息同步方法,装置及系统
技术领域
本发明涉及计算机技术领域,特别涉及一种信息同步方法,装置及系统。
背景技术
如今,汽车已经走进了千家万户,与汽车相关的行业也得到了蓬勃的发展。对于一些汽车行业,需要管理、处理庞大且复杂的车辆信息。例如,车辆信息管理平台,实时的向用户展示,车辆的最新数据,以保证用户获取到准确的车辆信息,但是一些车辆数据,处于实时更新的状态,例如:车辆的维保记录数据随着用户对车辆的使用,维保记录处于实时更新状态,这就使得车辆信息管理平台实时的对数据进行更新处理,才能保证,平台示出的出具的数据是准确的数据。
如图1为现有技术示出的车辆信息管理平台,通常包括:查询数据库,Go端,以及,Java端,查询数据库用于实时的获取车辆信息,并对车辆信息进行存储,Go端中设有实例,用于监听查询数据库,接收查询数据库的binlog日志,所述binlog日志包括,历史数据,以及,实时数据,通过历史数据与实时数据的比对,确定,更新项,发送更新项至Java端;Java端内置Elasticsearch搜索引擎完成车辆信息的统计,Java端通过接收更新项,遍历查询数据库,实现Elasticsearch搜索引擎中的数据与查询数据库中数据的同步。
现有技术示出的车辆信息管理平台通常用户在搜索过程中,通过Elasticsearch搜索引擎完成目标文档的搜索,在Elasticsearch搜索引擎中目标文档的确定是基于es索引完成的,es索引存在一个弊端,如果你想让新修改过搜索路径对应的文档可以被搜索到,你必须重新构建整个es索引。整个es索引构建的过程中,有可能接收到更新文档消息,而此时如果接收消息,更新文档会更新到原来的es索引对应的文件中,正在重建的索引是不能更新,Elasticsearch搜索引擎中的数据与查询数据库中数据不一致。
发明内容
本发明的发明目的在于提供一种信息同步方法,装置及系统,以解现有技术示出的现有技术示出的车辆信息管理平台,在es索引构建的过程中,若接收到更新文档消息,导致es索引更新失败,Elasticsearch搜索引擎中的数据与查询数据库中数据不一致的技术问题。
本申请实施例第一方面示出一种信息同步方法,所述方法包括:
接收执行消息,确定所述执行消息对应的索引的重建标识位;
如果所述重建标识位为正在重建,继续创建索引,将所述更新消息缓存于Redis队列;
完成所述索引创建,遍历Redis队列,调取所述更新消息,实现Elasticsearch搜索引擎中的数据与查询数据库中数据的同步。
可选择的,所述接收更新消息,确定所述更新消息对应的索引的重建标识位的步骤包括:
接收执行消息,所述执行消息包括:更新消息,以及,重建消息;
判断所述执行消息的类型;
如果所述执行消息为重建消息,创建索引;
如果所述执行消息为更新消息,确定所述执行消息对应的索引的重建标识位。
可选择的,所述完成索引创建,遍历Redis队列,调取所述更新消息的步骤包括:
完成索引创建;
遍历Redis,调取所述更新消息,切换所述索引的别名;
修改索引重建标识位;
再次拉取所述Redis队列中堆积的更新消息。
可选择的,所述实现Elasticsearch搜索引擎中的数据与查询数据库中数据的同步的步骤包括:
确定更新项,所述更新项包括:更新列名,以及,更新数据,更新列名为更新数据对应的列名;
根据所述更新列名,以及,更新数据,确定目标索引;
基于所述目标索引,遍历查询数据库,搜索更新文档ID;
发送所述更新文档ID,至Java端,Java端基于更新文档ID,搜索出更新数据,用更新数据更新Elasticsearch搜索引擎对应的索引,以及,数据。
可选择的,所述基于目标索引,遍历查询数据库,搜索更新文档ID的步骤包括:
根据所述查询数据库中数据业务逻辑,确定所述目标索引的子目标索引;
根据目标索引,确定目标索引,根据子目标索引确定子目标节点文档;
根据所述目标节点文档,以及,所述子目标节点文档,生成更新文档ID。
可选择的,所述基于目标索引,遍历查询数据库,搜索更新文档ID的步骤包括:
根据所述目标索引,确定局部文档ID;
确定包含局部文档ID的文档ID为更新文档ID。
可选择的,所述确定更新项的步骤包括:
获取监测数据,所述监测数据包括:历史数据,以及,实时数据;
将所述历史数据与所述实时数据输入gorouine进行比对,确定更新项。
可选择的,所述将所述历史数据与所述实时数据输入gorouine进行比对,确定更新项的步骤包括:
将所述历史数据与所述实时数据输入gorouine进行比对,根据比对结果,确定待更新项;
判断所述待更新项是否触发Elasticsearch的更新操作;
如果触发,确定所述待更新项为更新项;
如果不触发,删除待更新项。
本申请实施例第二方面示出一种信息同步装置,所述装置包括:
接收单元,用于接收执行消息,确定所述执行消息对应的索引的重建标识位;
缓存单元,用于如果所述重建标识位为正在重建,继续创建索引,将所述更新消息缓存于Redis队列;
调取单元,用于完成所述索引创建,遍历Redis队列,调取所述更新消息,实现Elasticsearch搜索引擎中的数据与查询数据库中数据的同步。
可选择的,所述接收单元包括:
第一接收单元,用于接收执行消息,所述执行消息包括:更新消息,以及,重建消息;
执行消息判断单元,用于判断所述执行消息的类型;
创建单元,用于如果所述执行消息为重建消息,创建索引;
重建标识位确定单元,如果所述执行消息为更新消息,确定所述执行消息对应的索引的重建标识位。
可选择的,所述调取单元包括:
第一创建单元,用于完成索引创建;
别名切换单元,用于遍历Redis,调取所述更新消息,切换所述索引的别名;
修改单元,用于修改索引重建标识位;
拉取单元,用于再次拉取所述Redis队列中堆积的更新消息。
可选择的,所述调取单元包括:
更新项确定单元,用于确定更新项,所述更新项包括:更新列名,以及,更新数据,更新列名为更新数据对应的列名;
索引确定单元,用于根据所述更新列名,以及,更新数据,确定目标索引;
搜索单元,用于基于所述目标索引,遍历查询数据库,搜索更新文档ID;
更新单元,用于发送所述更新文档ID,至Java端,Java端基于更新文档ID,搜索出更新数据,用更新数据更新Elasticsearch搜索引擎对应的索引,以及,数据。
可选择的,所述搜索单元包括:
子目标索引确定单元,用于根据所述查询数据库中数据业务逻辑,确定所述目标索引的子目标索引;
目标文档确定单元,用于根据目标索引,确定目标索引,根据子目标索引确定子目标节点文档;
更新文档ID生成单元,用于根据所述目标节点文档,以及,所述子目标节点文档,生成更新文档ID。
可选择的,所述搜索单元包括:
局部文档ID确定单元,用于根据所述目标索引,确定局部文档ID;
更新文档ID确定单元,用于确定包含局部文档ID的文档ID为更新文档ID。
可选择的,所述更新项确定单元包括:
获取单元,用于获取监测数据,所述监测数据包括:历史数据,以及,实时数据;
第一更新项确定单元,用于将所述历史数据与所述实时数据输入gorouine进行比对,确定更新项。
可选择的,所述第一更新项确定单元包括:
比对单元,用于将所述历史数据与所述实时数据输入gorouine进行比对,根据比对结果,确定待更新项;
判断单元,用于判断所述待更新项是否触发Elasticsearch的更新操作;
第二更新项确定单元,用于如果触发,确定所述待更新项为更新项;
删除单元,用于如果不触发,删除待更新项。
本申请实施例第三方面示出一种数据同步系统,所述系统包括:应用平台服务器,与所述应用平台服务器相连接的查询数据库,所述查询数据库设置在所述应用平台服务器的内部或独立设置,所述应用平台服务器通过互联网与Java端相连接;
所述Java端,用于基于更新文档ID,搜索出更新数据,用更新数据更新Elasticsearch搜索引擎对应的索引,以及,数据。
所述应用平台服务器,用于实现本申请实施例示出的方法;
所述查询数据库,用于相关数据的存储。
本申请实施例第四方面示出一种服务器,所述服务器包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本申请实施例实处的方法。
由以上技术方案可知,本申请实施例示出一种信息同步方法,装置及系统,所述方法括:接收执行消息,确定所述执行消息对应的索引的重建标识位;如果所述重建标识位为正在重建,继续创建索引,将所述更新消息缓存于Redis队列;完成所述索引创建,遍历Redis队列,调取所述更新消息,实现Elasticsearch搜索引擎中的数据与查询数据库中数据的同步。本申请实施例示出的方法,将更新消息缓存于Redis队列中,待重建索引完成后将缓存中取出来再消费到新的索引里面,保证Elasticsearch搜索引擎中的数据与查询数据库中数据最终一致性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术示出的车辆信息管理平台的结构框图;
图2根据一优选实施例示出的一种信息同步系统的结构框图;
图3根据一优选实施例示出的一种信息同步方法的流程图;
图4为根据一优选实施例示出的步骤S101的详细流程图;
图5为根据一优选实施例示出的步骤S103的详细流程图;
图6为根据又一优选实施例示出的步骤S103的详细流程图;
图7为根据一优选实施例示出的步骤S102323的详细流程图;
图8为根据又一优选实施例示出的步骤S10323的详细流程图;
图9为根据又一优选实施例示出的步骤S10321的详细流程图;
图10为根据又一优选实施例示出的步骤S103212的详细流程图;
图11根据一优选实施例示出的一种信息同步装置的结构框图;
图12根据一优选实施例示出的接收单元的结构框图;
图13根据一优选实施例示出的调取单元的结构框图;
图14根据又一优选实施例示出的调取单元的结构框图;
图15根据一优选实施例示出的搜索单元的结构框图;
图16根据又一优选实施例示出的搜索单元的结构框图;
图17根据一优选实施例示出的更新项确定单元的结构框图;
图18根据一优选实施例示出的第一更新项确定单元的结构框图;
图19为根据一优选实施例示出的一种服务器。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请实施例中:
MQ:全称MessageQueue,中文名称消息队列,是一种应用程序对应用程序的通信方法。应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。
ElasticSearch:是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。
ElasticSearch索引:Elasticsearch一直存储数据的集合,相当于一个数据库
Redis:Redis缓存,一种非关系型数据库,以key-value形式存储数据。
实施例1:
请参阅图2,本申请实施例第一方面示出一种数据同步系统,所述系统包括:应用平台服务器31,与所述应用平台服务器31相连接的查询数据库32,所述查询数据库32设置在所述应用平台服务器31的内部或独立设置,所述应用平台服务器31通过互联网与Java端33相连接;
所述Java端33,用于基于更新文档ID,搜索出更新数据,用更新数据更新Elasticsearch搜索引擎对应的索引,以及,数据。
所述应用平台服务器31,用于实现本申请实施例示出的方法;
用于接收执行消息,(1)确定所述执行消息对应的索引的重建标识位;
所述执行消息包括;更新消息和重建消息;
(2)如果所述重建标识位为正在重建,继续创建索引,将所述更新消息缓存于Redis队列;
当接收到的执行消息为更新消息时,首先,判断所述执行消息对应的索引的重建标识位,通常系统规定重建标识位为1时,所述索引正在重建,所述重建标识位为0时,所述索引没有在重建,索引重建的过程中,将所述更新消息缓存在Redis队列;
(3)完成所述索引创建,遍历Redis队列,调取所述更新消息,实现Elasticsearch搜索引擎中的数据与查询数据库中数据的同步。
待重建索引完成后将缓存中取出来再消费到新的索引里面,保证Elasticsearch搜索引擎中的数据与查询数据库中数据最终一致性。
所述应用平台服务器还用于通过监听binlog日志,所述binlog日志包括历史数据,以及实时数据,当实时数据与历史数据存在差异时,生成更新项,确定更新项对应的目标索引,通过目标索引,确定全部更新文档的更新文档ID,将更新文档ID封装成消息发送到消息队列,发送至Java端,Java端收到消息,解析消息,根据更新文档ID,从查询数据库中搜索出最新的数据,将最新数据更新elasticsearch对应的索引和文档本申请实施例示出的技术方案该方案通过监听binlog日志,当数据库进行更新操作时会主动通知程序监听机制,根据变化的列判断哪些索引受到影响,进而判断是否需要更新索引中的文档,需要则更新对应的文档,进而实现Elasticsearch搜索引擎中的数据与查询数据库中数据的同步。
所述查询数据库32,用于相关数据的存储。
本申请实施例示出的系统,应用平台服务器将更新消息缓存于Redis队列中,待重建索引完成后将缓存中取出来再消费到新的索引里面,保证Elasticsearch搜索引擎中的数据与查询数据库中数据最终一致性。
实施例2:
请参阅3,本申请实施例第一方面示出一种信息同步方法,所述方法包括:
S101接收执行消息,确定所述执行消息对应的索引的重建标识位;
所述执行消息包括;更新消息和重建消息;
重建标识位为系统的规定值,若索引正在重建则所述重建标识位为1,若索引不是正在重建则所述重建标识位为0,在实际应用中凡是可以区别表示索引正在重建的状态和不在重建状态不一致的表示方法均在本申请实施例示出的方法的保护范围内,在此,由于篇幅有限便不一一举例说明。
值得注意的是,所述Redis队列,实时的记载着每个索引的重建标识位。
S102如果所述重建标识位为正在重建,继续创建索引,将所述更新消息缓存于Redis队列;
当接收到的执行消息为更新消息时,首先,判断所述执行消息对应的索引的重建标识位,通常系统规定重建标识位为1时,所述索引正在重建,所述重建标识位为0时,所述索引没有在重建,索引重建的过程中,将所述更新消息缓存在Redis队列;
S103完成所述索引创建,遍历Redis队列,调取所述更新消息,实现Elasticsearch搜索引擎中的数据与查询数据库中数据的同步。
待重建索引完成后将缓存中取出来再消费到新的索引里面,保证Elasticsearch搜索引擎中的数据与查询数据库中数据最终一致性。
实施例3:
请参阅图4,实施例3与实施例2具有相似的步骤,唯一的区别在于实施例2示出的技术方案中步骤S101包括以下的步骤:
S1011接收执行消息,所述执行消息包括:更新消息,以及,重建消息;
所述更新消息包括:索引中相关文档插入,替换,以及,删除的相关数据。
重建消息包括,索引重建的相关数据。
S1012判断所述执行消息的类型;
对于更新消息而言,首先访问Redis队列,获取所述更新消息对应的索引的重建标识位,若所述索引没有正在更新,则直接进行数据的更新,所述更新包括:数据的插入,替换,以及,删除。
若所述索引没有正在更新,则直接经所述更新消息发送至Redis队列,所述Redis队列对所述更新消息进行缓存。
S1013如果所述执行消息为重建消息,创建索引;
如果所述执行消息为重建消息,创建索引,若创建索引的过程中接收到更新消息,仍然继续创建索引,将更新消息缓存在Redis队列中,待索引重建过程完成后,到Redis队列中拉取重建消息。
S1014如果所述执行消息为更新消息,确定所述执行消息对应的索引的重建标识位。索引重建完成后,更改执行消息对应的索引的重建标识位。本申请实施例示出的方法在索引更新的过程中遇到更新消息,首先完成索引的重建,然后,再去更新索引对应的文档。通常索引的更新,影响的是用户的搜索路径,例如,用户的关键词A,对于更新前的索引搜索出文档A,但是,后台发现文档A并不是关键词A对应的搜索文档,此时重建索引,通常索引的重建发生在某一时间段内,可见索引的重建直接影响着用户搜索的文档。对于更新消息,仅仅是对文档中的一些数据的修改;若先更新索引,后重建索引,会Elasticsearch搜索引擎中的数据与查询数据库中数据的同步产生较大的影响。
例如,用户的关键词A,对于更新前的索引搜索出文档A,但是,后台(查询数据库)发现文档A并不是关键词A对应的搜索文档A,此时重建索引,关键词A对应的搜索文档B,
若预先将文档A更新为文档A-1,关键词A对应的文档仍然是A-1,显然搜索引擎中的数据与查询数据库中的数据是不一致的。
实施例4:
请参阅图5,
实施例4与实施例2具有相似的步骤,唯一的区别在于实施例2示出的技术方案中步骤S103包括以下的步骤:
S10311完成索引创建,遍历Redis,调取所述更新消息,切换所述索引的别名;
通常每个索引创建完成后,都会带有一个时间的后缀。例如索引A,重建后的索引为:索引20180522,通常用户在收索过程中,需要输入索引20180522,方可找到索引对应的文档,此时本申请实施例示出方法通过切换索引别名方式,方便用户搜索,将索引的唯一标识删除。
索引包括:索引的公共标识,以及,索引的唯一标识;
举例说明:原索引为:索引1-2015 0521;
重建索引为:索引1-2015 0522;
其中,索引1为公共标识,所述-2015 0521,以及,-2015 0522为唯一标识。
S10312修改索引重建标识位;
S10313再次拉取所述Redis队列中堆积的更新消息。
本申请实施例示出的方法通过删除唯一标识的方式,简化索引,方便用户搜索,缩短了搜索过程中,应用平台的等待时间,提高了系统的带宽,以及,资源的利用率。
实施例5:
为了进一步保证lasticsearch搜索引擎中的数据与查询数据库中数据最终一致性。本申请实施例示出一种数据的更新方式,具体的请参阅图6,实施例5与实施例2-4具有相似的步骤,唯一的区别在于实施例2-4示出的技术方案中步骤S103包括以下的步骤:
S10321确定更新项,所述更新项包括:更新列名,以及,更新数据,更新列名为更新数据对应的列名;
所述更新项为历史数据,与实时数据不一致的数据;
举例说明:
历史数据:
VIN码 颜色 车龄
123 红色 1年
124 红色 2年
125 红色 3年
实时数据:
VIN码 颜色 车龄
123 红色 4年
124 红色 2年
125 红色 3年
可见,对于VIN码123的车辆,实时数据与历史数据发生差异,此时定义更新项为:更新列名:车龄,更新数据:4年。
S10322根据所述更新列名,以及,更新数据,确定目标索引;
值得注意的是,本申请实施例示出的方案,对每一个文档均设置一个索引,以及,起到唯一标识作用的文档ID。
例如:VIN码123,颜色红色,车龄为4年对应的文档的索引为索引1;
VIN码124,颜色红色,车龄为2年对应的文档的索引为索引2;
VIN码125,颜色红色,车龄为3年对应的文档的索引为索引3;
其中,索引1为目标索引。
S10323基于所述目标索引,遍历查询数据库,搜索更新文档ID;
值得注意的是,本身申请实施例示出的方法,查询数据库中的数据以json结构存储;数据之间存在“父子”之间的联系,若一个数据发生改变,与之相关联的数据,以及数据的子数据均可能发生变化,因此本申请实施例示出的方法,通过目标索引,确定与所述目标索引相关联的所有数据的更新文档ID。
举例说明:
颜色 车龄 车况 维保记录 车检报告
红色 4 文档1 文档2 文档3
当车龄改变,对应更新文档ID,包括文档1的ID,文档2的ID,文档3的ID。
在实际应用中,可以根据目标索引对应文档与其余文档的关联,搜索出更新文档ID,或根据文档之间的“父子”关系,搜索出更新文档ID,在实际应用中,凡是可以根据一个索引,确定所有与该索引相关联的文档的方式均在本申请实施例示出的方法的保护范围内,再次由于篇幅有限,便不一一记载。
S10324发送所述更新文档ID,至Java端,Java端基于更新文档ID,搜索出更新数据,用更新数据更新Elasticsearch搜索引擎对应的索引,以及,数据。
本申请实施例示出的方法,该方案通过监听binlog日志,所述binlog日志包括历史数据,以及实时数据,当实时数据与历史数据存在差异时,生成更新项,确定更新项对应的目标索引,通过目标索引,确定全部更新文档的更新文档ID,将更新文档ID封装成消息发送到消息队列,发送至Java端,Java端收到消息,解析消息,根据更新文档ID,从查询数据库中搜索出最新的数据,将最新数据更新elasticsearch对应的索引和文档本申请实施例示出的技术方案该方案通过监听binlog日志,当数据库进行更新操作时会主动通知程序监听机制,根据变化的列判断哪些索引受到影响,进而判断是否需要更新索引中的文档,需要则更新对应的文档,有效地避免了现有技术示出的定时预定的时间间隔,轮询查询数据库来更新elasticsearch搜索引擎过程中,时间间隔不好把控,无法保证数据实时性的技术问题。
实施例6:
为了进一步保证Elasticsearch搜索引擎中的数据与查询数据库中数据的同步,本申请实施例示出一种更新文档ID的生成方法,具体的,请参阅图7;
实施例6与实施例5具有相似的步骤,唯一的区别在于实施例5示出的技术方案中步骤S10323包括以下的步骤:
S1032311根据所述查询数据库中数据业务逻辑,确定所述目标索引的子目标索引;
述查询数据库中的数据以语句的形式存在。
本身申请实施例示出的方法,查询数据库中的数据以json结构存储;数据之间存在“父子”之间的联系,若一个数据发生改变,与之相关联的数据,以及数据的子数据均可能发生变化,因此本申请实施例示出的方法,通过目标索引,确定与所述目标索引相关联的所有数据的更新文档ID。
例如:目标索引奥迪对应的文档为:文档1,文档2,文档3,以及,文档4;
红色,奥迪对应的文档为文档1-1以及文档2-1;文档1-1可以为与文档1相同的文档,也可以为在文档1的基础上增加一些内容的文档;文档2-1可以为与文档2相同的文档,也可以为在文档2的基础上增加一些内容的文档;
此时,根据查询数据库中数据业务逻辑,发现索引“红色奥迪”是目标索引“奥迪”的子目标索引。
S1032312根据目标索引,确定目标索引,根据子目标索引确定子目标节点文档;
那么,文档1,文档2,文档3,以及,文档4即为目标文档;
相应的文档1-1,文档2-1,为子目标文档。
S1032313根据所述目标节点文档,以及,所述子目标节点文档,生成更新文档ID。
可见本申请实施例示出的技术方案,通过查询数据库中数据业务逻辑,确定发生更新的文档,以及,发生更新文档对应的子文档,进而确定全部发生变更文档,然后确定全部发生变更文档的ID,本申请实施例示出的方法,保证一次遍历查询数据库,将搜索出全部发生变更文档的ID,避免多次遍历查询数据库,缩短了遍历时间,进一步,保证本申请实施例示出的Elasticsearch搜索引擎数据的实时性。
实施例7:
为了进一步保证Elasticsearch搜索引擎中的数据与查询数据库中数据的同步,本申请实施例示出一种更新文档ID的生成方法,具体的,请参阅图8;
实施例7与实施例6具有相似的步骤,唯一的区别在于实施例6示出的技术方案中步骤S10323包括以下的步骤:
S1032321根据所述目标索引,确定局部文档ID;
在索引的构建过程中,索引与文档的ID存在一些对应的关系:
例如对应一个索引:红色,奥迪。其中,红色对应的ID为235,奥迪对应的ID为456;
红色,奥迪对应的局部ID为:......235......456.....;或.....456......235.....;
S1032322确定包含局部文档ID的文档ID为更新文档ID。
本申请实施例示出的方法,根据局部文档ID确定出全部更新文档ID,将搜索出全部发生变更文档的ID,避免多次遍历查询数据库,缩短了遍历时间,进一步,保证本申请实施例示出的Elasticsearch搜索引擎数据的实时性。
实施例8:
为了进一步,缩短更新项获取的速率,保证本申请实施例示出的方法的实时性,本申请实施例示出一种历史数据与实时数据的比对方法,具体的,请参阅图9;实施例8与实施例5具有相似的步骤,唯一的区别在于实施例5示出的技术方案中步骤S10321包括以下的步骤:
S103211获取监测数据,所述监测数据包括:历史数据,以及,实时数据;
获取监测数据包括,应用平台数据库主动获取,和查询数据库主动推送;
当更新时候,包含偶数行:如2行,那么0行为更新前数据,1行为更新后的最新数据,当插入的时候只有最新数据,无老数据,更新时需比对,插入时无需比对。
本申请实施例示出的检测数据为row模式的binlog日志。
所述row模式的binlog日志通常是每个列对应一个值,有的值对应一篇或多篇文档。
S103212将所述历史数据与所述实时数据输入gorouine进行比对,确定更新项。
gorouine可以把它看做一个局部的调度器,多个gorouine同时等待着对历史数据与所述实时数据进行比较,历史数据1与所述实时数据1进行通过gorouine-1比较;当历史数据2与所述实时数据2,需要比较时,可直接利用gorouine-2比较,以此类推,在比对的过程中,无需等待前一个数据比对完成,提高了数据处理的效率,缩短更新项获取的速率,保证本申请实施例示出的Elasticsearch搜索引擎数据的实时性。
实施例9:
为了降低应用平台服务的数据处理量,本申请实施例示出一种更新项的过滤方法,具体的,请参阅图10;
实施例9与实施例8具有相似的步骤,唯一的区别在于实施例8示出的技术方案中步骤S103212包括以下的步骤:
S1032121将所述历史数据与所述实时数据输入gorouine进行比对,根据比对结果,确定待更新项;
并不是所有的待更新项均会对Elasticsearch搜索引擎对应的索引,以及,数据产生影响,
但是这些更新项对应的实时数据,以及,历史数据,在数据获取的过程中,同时被获取。
在对待更新项继续向下处理的过程前,本申请实施例示出方法,预先对待更新项进行判断,判断所述待更新项,否触发Elasticsearch的更新操作;
S1032122判断所述待更新项是否触发Elasticsearch的更新操作;
具体的,判断方法如下:
Elasticsearch搜索引擎,包括Elasticsearch索引,以及,文档;这些索引和/文档为否触发Elasticsearch的更新操作的更新项。
本申请实施例示出的方法,首先确定待更新项对应的待更新索引,然后,确定待更新索引的相关联的索引,以及,子索引,判断所述待更新索引的相关联的索引,以及,子索引是否为Elasticsearch索引,如果是Elasticsearch索引,则认为待更新项触发Elasticsearch的更新操作。
S103213如果触发,确定所述待更新项为更新项;
如果待更新索引的相关联的索引,以及,子索引不是Elasticsearch索引,则认为待更新项不触发Elasticsearch的更新操作。
S103214果不触发,删除待更新项。
所述删除包括:忽略,执行逻辑直接结束,不进行后续步骤。
可见本申请实施例示出的技术方,预先过滤掉一些无用的待更新项,直接将这些无用的待更新项删除,降低了应用平台的数据的处理量,提高了系统的带宽以及资源的利用率,保证本申请实施例示出的Elasticsearch搜索引擎数据的实时性。
实施例10:
请参阅图11
本申请实施例第三方面示出一种信息同步装置,所述装置包括:
接收单元21,用于接收执行消息,确定所述执行消息对应的索引的重建标识位;
缓存单元22,用于如果所述重建标识位为正在重建,继续创建索引,将所述更新消息缓存于Redis队列;
调取单元23,用于完成所述索引创建,遍历Redis队列,调取所述更新消息,实现Elasticsearch搜索引擎中的数据与查询数据库中数据的同步。
实施例11;
请参阅图12,实施例10示出的技术方案中所述接收单元21包括:
第一接收单元211,用于接收执行消息,所述执行消息包括:更新消息,以及,重建消息;
执行消息判断单元212,用于判断所述执行消息的类型;
创建单元213,用于如果所述执行消息为重建消息,创建索引;
重建标识位确定单元214,如果所述执行消息为更新消息,确定所述执行消息对应的索引的重建标识位。
实施例12;
请参阅图13,实施例10示出的技术方案中所述调取单元23包括:
第一创建单元2311,用于完成索引创建;
别名切换单元2312,用于遍历Redis,调取所述更新消息,切换所述索引的别名;
修改单元2313,用于修改索引重建标识位;
拉取单元2314,用于再次拉取所述Redis队列中堆积的更新消息。
实施例13;
请参阅图14,实施例10-12示出的技术方案中所述调取单元23包括:
更新项确定单元2321,用于确定更新项,所述更新项包括:更新列名,以及,更新数据,更新列名为更新数据对应的列名;
索引确定单元2322,用于根据所述更新列名,以及,更新数据,确定目标索引;
搜索单元2323,用于基于所述目标索引,遍历查询数据库,搜索更新文档ID;
更新单元2324,用于发送所述更新文档ID,至Java端,Java端基于更新文档ID,搜索出更新数据,用更新数据更新Elasticsearch搜索引擎对应的索引,以及,数据。
实施例14;
请参阅图15,实施例13示出的技术方案中所述搜索单元2323包括:
子目标索引确定单元232311,用于根据所述查询数据库中数据业务逻辑,确定所述目标索引的子目标索引;
目标文档确定单元232312,用于根据目标索引,确定目标索引,根据子目标索引确定子目标节点文档;
更新文档ID生成单元232313,用于根据所述目标节点文档,以及,所述子目标节点文档,生成更新文档ID。
实施例15;
请参阅图16,实施例13示出的技术方案中所述搜索单元2323包括:
局部文档ID确定单元232321,用于根据所述目标索引,确定局部文档ID;
更新文档ID确定单元232322,用于确定包含局部文档ID的文档ID为更新文档ID。
实施例16;
请参阅图17,实施例13示出的技术方案中所述更新项确定单元2321包括:
获取单元23211,用于获取监测数据,所述监测数据包括:历史数据,以及,实时数据;
第一更新项确定单元23212,用于将所述历史数据与所述实时数据输入gorouine进行比对,确定更新项。
实施例17;
请参阅图18,实施例17示出的技术方案中所述第一更新项确定单元23212包括:
比对单元232121,用于将所述历史数据与所述实时数据输入gorouine进行比对,根据比对结果,确定待更新项;
判断单元232122,用于判断所述待更新项是否触发Elasticsearch的更新操作;
第二更新项确定单元232123,用于如果触发,确定所述待更新项为更新项;
删除单元232124,用于如果不触发,删除待更新项。
实施例18:
本申请实施例第四方面示出一种服务器,请参阅图19包括:
一个或多个处理器41;
存储器42,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器41执行,使得所述一个或多个处理器41实现本申请实施例实处的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

Claims (13)

1.一种信息同步方法,其特征在于,所述方法包括:
接收执行消息,确定所述执行消息对应的索引的重建标识位;
如果所述重建标识位为正在重建,继续创建索引,将更新消息缓存于Redis队列;
完成所述索引创建,遍历Redis队列,调取所述更新消息,实现Elasticsearch搜索引擎中的数据与查询数据库中数据的同步;
接收执行消息,所述执行消息包括:更新消息以及重建消息;
判断所述执行消息的类型;
如果所述执行消息为重建消息,创建索引;
如果所述执行消息为更新消息,确定所述执行消息对应的索引的重建标识位;
所述实现Elasticsearch搜索引擎中的数据与查询数据库中数据的同步的步骤包括:
确定更新项,所述更新项包括:更新列名,以及,更新数据,更新列名为更新数据对应的列名;
根据所述更新列名,以及,更新数据,确定目标索引;
基于所述目标索引,遍历查询数据库,搜索更新文档ID;
发送所述更新文档ID,至Java端,Java端基于更新文档ID,搜索出更新数据,用更新数据更新Elasticsearch搜索引擎对应的索引以及数据。
2.根据权利要求1所述方法,其特征在于,所述完成索引创建,遍历Redis队列,调取所述更新消息的步骤包括:
完成索引创建;
遍历Redis,调取所述更新消息,切换所述索引的别名;
修改索引重建标识位;
再次拉取所述Redis队列中堆积的更新消息。
3.根据权利要求1所述的方法,其特征在于,所述基于目标索引,遍历查询数据库,
搜索更新文档ID的步骤包括:
根据所述查询数据库中数据业务逻辑,确定所述目标索引的子目标索引;
根据目标索引,确定目标索引,根据子目标索引确定子目标节点文档;
根据所述目标节点文档,以及,所述子目标节点文档,生成更新文档ID。
4.根据权利要求1所述的方法,其特征在于,所述基于目标索引,遍历查询数据库,
搜索更新文档ID的步骤包括:
根据所述目标索引,确定局部文档ID;
确定包含局部文档ID的文档ID为更新文档ID。
5.根据权利要求1所述的方法,其特征在于,所述确定更新项的步骤包括:
获取监测数据,所述监测数据包括:历史数据以及实时数据;
将所述历史数据与所述实时数据输入gorouine进行比对,确定更新项。
6.根据权利要求5所述的方法,其特征在于,所述将所述历史数据与所述实时数据输入gorouine进行比对,确定更新项的步骤包括:
将所述历史数据与所述实时数据输入gorouine进行比对,根据比对结果,确定待更新项;
判断所述待更新项是否触发Elasticsearch的更新操作;
如果触发,确定所述待更新项为更新项;
如果不触发,删除待更新项。
7.一种信息同步装置,其特征在于,所述装置包括:
接收单元,用于接收执行消息,确定所述执行消息对应的索引的重建标识位;
缓存单元,用于如果所述重建标识位为正在重建,继续创建索引,将更新消息缓存于Redis队列;
调取单元,用于完成所述索引创建,遍历Redis队列,调取所述更新消息,实现Elasticsearch搜索引擎中的数据与查询数据库中数据的同步;
所述调取单元包括:
更新项确定单元,用于确定更新项,所述更新项包括:更新列名,以及,更新数据,更新列名为更新数据对应的列名;
索引确定单元,用于根据所述更新列名,以及,更新数据,确定目标索引;
搜索单元,用于基于所述目标索引,遍历查询数据库,搜索更新文档ID;
更新单元,用于发送所述更新文档ID,至Java端,Java端基于更新文档ID,搜索出更新数据,用更新数据更新Elasticsearch搜索引擎对应的索引以及数据;
第一接收单元,用于接收执行消息,所述执行消息包括:更新消息以及重建消息;
执行消息判断单元,用于判断所述执行消息的类型;
创建单元,用于如果所述执行消息为重建消息,创建索引;
重建标识位确定单元,如果所述执行消息为更新消息,确定所述执行消息对应的索引的重建标识位。
8.根据权利要求7所述装置,其特征在于,所述调取单元包括:
第一创建单元,用于完成索引创建;
别名切换单元,用于遍历Redis,调取所述更新消息,切换所述索引的别名;
修改单元,用于修改索引重建标识位;
拉取单元,用于再次拉取所述Redis队列中堆积的更新消息。
9.根据权利要求7所述的装置,其特征在于,所述搜索单元包括:
子目标索引确定单元,用于根据所述查询数据库中数据业务逻辑,确定所述目标索引的子目标索引;
目标文档确定单元,用于根据目标索引,确定目标索引,根据子目标索引确定子目标节点文档;
更新文档ID生成单元,用于根据所述目标节点文档,以及,所述子目标节点文档,生成更新文档ID。
10.根据权利要求7所述的装置,其特征在于,所述搜索单元包括:
局部文档ID确定单元,用于根据所述目标索引,确定局部文档ID;
更新文档ID确定单元,用于确定包含局部文档ID的文档ID为更新文档ID。
11.根据权利要求7所述的装置,其特征在于,所述更新项确定单元包括:
获取单元,用于获取监测数据,所述监测数据包括:历史数据以及实时数据;
第一更新项确定单元,用于将所述历史数据与所述实时数据输入gorouine进行比对,确定更新项。
12.根据权利要求11所述的装置,其特征在于,所述第一更新项确定单元包括:
比对单元,用于将所述历史数据与所述实时数据输入gorouine进行比对,根据比对结果,确定待更新项;
判断单元,用于判断所述待更新项是否触发Elasticsearch的更新操作;
第二更新项确定单元,用于如果触发,确定所述待更新项为更新项;
删除单元,用于如果不触发,删除待更新项。
13.一种数据同步系统,其特征在于,所述系统包括:应用平台服务器,与所述应用平台服务器相连接的查询数据库,所述查询数据库设置在所述应用平台服务器的内部或独立设置,所述应用平台服务器通过互联网与Java端相连接;
所述Java端,用于基于更新文档ID,搜索出更新数据,用更新数据更新Elasticsearch搜索引擎对应的索引,以及,数据;
所述应用平台服务器,用于实现如权利要求1-6任一项所述的方法;
所述查询数据库,用于相关数据的存储。
CN201810532858.0A 2018-05-29 2018-05-29 一种信息同步方法,装置及系统 Active CN110609865B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810532858.0A CN110609865B (zh) 2018-05-29 2018-05-29 一种信息同步方法,装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810532858.0A CN110609865B (zh) 2018-05-29 2018-05-29 一种信息同步方法,装置及系统

Publications (2)

Publication Number Publication Date
CN110609865A CN110609865A (zh) 2019-12-24
CN110609865B true CN110609865B (zh) 2022-04-15

Family

ID=68887861

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810532858.0A Active CN110609865B (zh) 2018-05-29 2018-05-29 一种信息同步方法,装置及系统

Country Status (1)

Country Link
CN (1) CN110609865B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111352936A (zh) * 2020-02-06 2020-06-30 福建天泉教育科技有限公司 Es重建索引的方法、存储介质
CN111367692B (zh) * 2020-03-09 2023-08-22 政采云有限公司 一种搜索引擎数据处理方法、装置、电子设备及介质
CN111666398A (zh) * 2020-06-17 2020-09-15 天津异乡好居网络科技有限公司 一种基于房源信息关键字搜索匹配的方法
CN112052247B (zh) * 2020-09-29 2024-05-07 微医云(杭州)控股有限公司 搜索引擎的索引更新系统、方法、装置、电子设备、存储介质
CN112507187B (zh) * 2020-11-11 2022-09-27 贝壳技术有限公司 索引变更方法及装置
CN114519090B (zh) * 2020-11-20 2023-11-21 马上消费金融股份有限公司 一种停用词的管理方法、装置及电子设备
CN113032491B (zh) * 2021-04-07 2023-01-06 工银科技有限公司 实现静态数据同步的方法、装置、电子设备及介质
CN116401259B (zh) * 2023-06-08 2023-08-22 北京江融信科技有限公司 一种用于ElasticSearch数据库的自动化预创建索引方法和系统
CN117149763B (zh) * 2023-08-08 2024-04-02 广州方舟信息科技有限公司 一种索引切换同步方法、装置及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103177027A (zh) * 2011-12-23 2013-06-26 北京新媒传信科技有限公司 获取动态Feed索引的方法和系统
CN106407376A (zh) * 2016-09-12 2017-02-15 杭州数梦工场科技有限公司 重建索引方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7308456B2 (en) * 2002-12-19 2007-12-11 International Business Machines Corporation Method and apparatus for building one or more indexes on data concurrent with manipulation of data

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103177027A (zh) * 2011-12-23 2013-06-26 北京新媒传信科技有限公司 获取动态Feed索引的方法和系统
CN106407376A (zh) * 2016-09-12 2017-02-15 杭州数梦工场科技有限公司 重建索引方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Elasticsearch在车牌识别系统中的应用研究;许大宏;《计算机时代》;20141231;第12-14页 *

Also Published As

Publication number Publication date
CN110609865A (zh) 2019-12-24

Similar Documents

Publication Publication Date Title
CN110609865B (zh) 一种信息同步方法,装置及系统
US11288282B2 (en) Distributed database systems and methods with pluggable storage engines
CN110147398B (zh) 一种数据处理方法、装置、介质和电子设备
US20230144450A1 (en) Multi-partitioning data for combination operations
CN109254733B (zh) 用于存储数据的方法、装置和系统
CN110609844B (zh) 一种数据更新方法,装置及系统
CN103678494B (zh) 客户端同步服务端数据的方法及装置
US8219575B2 (en) Method and system for specifying, preparing and using parameterized database queries
CN105531698B (zh) 用于批量和实时数据处理的设备、系统和方法
CN110543512B (zh) 一种信息同步方法,装置及系统
US9043327B1 (en) Performing flexible pivot querying of monitoring data using a multi-tenant monitoring system
CN110275983A (zh) 交通监控数据的检索方法及装置
RU2632414C2 (ru) Способ формирования иерархической структуры данных, способ поиска данных с помощью иерархической структуры данных, сервер и постоянный машиночитаемый носитель
CN109815240B (zh) 用于管理索引的方法、装置、设备和存储介质
CN110807028B (zh) 用于管理存储系统的方法、设备和计算机程序产品
US9646016B2 (en) Methods circuits apparatuses systems and associated computer executable code for data deduplication
CN114741335A (zh) 缓存管理方法、装置、介质及设备
CN111026709A (zh) 基于集群访问的数据处理方法及装置
CN105653556B (zh) 一种数据老化方法及装置
CN107193891B (zh) 内容推荐方法及装置
KR20190129474A (ko) 데이터 검색 장치 및 방법
US11055266B2 (en) Efficient key data store entry traversal and result generation
CN113138943A (zh) 一种处理请求的方法和装置
CN116257718B (zh) 数据更新方法、装置、电子设备及计算机可读存储介质
CN114385637A (zh) 消息处理方法、装置、电子设备以及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20231128

Address after: 230012 In the factory building of Anhui Guogou Energy Co., Ltd., 100 meters east of the intersection of Guanjing Road and Luban Road in Xinzhan District, Hefei City, Anhui Province

Patentee after: Hefei Youquan Information Technology Co.,Ltd.

Address before: 100102 room 323701, building 5, yard 1, Futong East Street, Chaoyang District, Beijing

Patentee before: YOUXINPAI (BEIJING) INFORMATION TECHNOLOGY Co.,Ltd.