CN110442645A - 数据索引方法及装置 - Google Patents
数据索引方法及装置 Download PDFInfo
- Publication number
- CN110442645A CN110442645A CN201910627141.9A CN201910627141A CN110442645A CN 110442645 A CN110442645 A CN 110442645A CN 201910627141 A CN201910627141 A CN 201910627141A CN 110442645 A CN110442645 A CN 110442645A
- Authority
- CN
- China
- Prior art keywords
- fragment
- data
- target
- main
- main fragment
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种数据索引方法及装置,根据指定索引文件的分片规则确定各待***数据分别所属的目标主分片,将目标主分片从所在的目标节点备份到本地,并通过与ElasticSearch服务进程相互独立的数据***进程,将属于该目标主分片的待***数据***备份的目标主分片中,得到目标新分片,将该目标节点中的该目标主分片替换成目标新分片。如此,可以确保数据***过程与集群中的ElasticSearch服务进程相互独立,且能够提高数据***效率。
Description
技术领域
本申请涉及大数据技术领域,具体而言,涉及一种数据索引方法及装置。
背景技术
ElasticSearch是目前最受欢迎的一种全文搜索引擎,其采用索引(index)来保存数据。其中,索引可以包括多个分片(shard),这多个分片分布在ElasticSearch集群的多个ElasticSearch节点上。为了确保数据的稳定性,通常会针对索引的每个分片设置至少一个副本分片(Replica shard),其中,原始分片称为主分片(Primary shard)。主分片及其对应的副本分片通常部署在不同的ElasticSearch节点上。
在一些应用场景中,需要将第三方数据库中的数据记录***ElasticSearch集群的索引文件中保存。现有技术主要通过ElasticSearch提供的客户端向集群中的一个ElasticSearch节点发送数据***请求,当该请求中的每条数据记录均被***其所属的主分片及对应副本分片后,客户端才能收到请求完成的响应信息,从而才能对外提供针对新***数据记录的查询服务。
然而,请求中的各条数据记录所属的主分片和副本分片通常位于不同的ElasticSearch节点上,且每条数据记录通常先由主分片所在ElasticSearch节点将其***主分片,再由主分片所在ElasticSearch节点通知副本分片所在ElasticSearch节点将其***副本分片中。因此,向ElasticSearch集群***数据需执行大量的网络IO操作,耗时较长,效率较低,且会与ElasticSearch节点提供的查询服务相互干扰。
发明内容
有鉴于此,本申请的目的之一在于提供一种数据索引方法及装置,以改善上述问题。
为了达到上述目的,本申请实施例采用以下技术方案:
第一方面,本申请实施例还提供一种数据索引方法,所述方法包括:
获取需要***指定索引文件的多条待***数据记录;
从ElasticSearch集群中获取所述指定索引文件的元数据信息,根据所述元数据信息确定所述指定索引文件的分片规则,根据所述分片规则从所述指定索引文件包括的多个主分片中确定每条待***数据记录所属的目标主分片;
针对确定的每个目标主分片,通过与所述ElasticSearch集群中的ElasticSearch服务进程相互独立的数据***进程,从所述ElasticSearch集群中存储有所述目标主分片的目标节点将所述目标主分片备份到本地,将属于所述目标主分片的每条待***数据记录***备份的目标主分片中,得到目标新分片,并将所述目标节点上的所述目标主分片替换成所述目标新分片。
第二方面,本申请实施例提供一种数据索引装置,包括:
数据分流模块,用于获取需要***指定索引文件的多条待***数据记录;从ElasticSearch集群中获取所述指定索引文件的元数据信息,根据所述元数据信息确定所述指定索引文件的分片规则,根据所述分片规则从所述指定索引文件包括的多个主分片中确定每条待***数据记录所属的目标主分片;
数据***模块,用于针对确定的每个目标主分片,通过与所述ElasticSearch集群中的ElasticSearch服务进程相互独立的数据***进程,从所述ElasticSearch集群中存储有所述目标主分片的目标节点将所述目标主分片备份到本地,将属于所述目标主分片的每条待***数据记录***备份的目标主分片中,得到目标新分片,并将所述目标节点上的所述目标主分片替换成所述目标新分片。
相较于现有技术,本申请实施例提供的一种数据索引方法及装置,对于属于同一主分片的待***数据记录,将该待***数据记录所属的主分片备份到本地,并通过与ElasticSearch集群中的ElasticSearch服务进程相互独立的数据***进程来将该待***数据记录***指定索引文件中。一方面可以确保数据***过程中与ElasticSearch集群中的ElasticSearch服务进程相互独立,从而避免对ElasticSearch服务进程提供的数据查询服务造成影响,或受到ElasticSearch服务进程提供的数据查询服务的限制。另一方面,可以避免数据***过程中各个ElasticSearch服务进程之间的数据传输,从而提高数据***效率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种ElasticSearch集群的架构示意图;
图2为本申请实施例提供的一种数据索引方法的流程示意图;
图3为本申请实施例提供的一种示例中的数据***的流程示意图;
图4为本申请实施例提供的一种目标服务器的结构示意图;
图5为本申请实施例提供的一种数据索引装置的功能模块示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
请参照图1,图1是本申请实施例提供的一种ElasticSearch(简称,ES)集群10的架构示意图。ES集群10部署在相互通信连接的多个服务器(或主机)上,每个服务器上运行有一个或多个ES服务进程,每个ES服务进程是ES集群的一个ES节点(node),例如图1所示,ES集群10包括ES节点0、1和2。
ES提供能够与ES服务进程通信的客户端,例如,ES Client API接口、ES ClientREST接口等,用户侧设备可以通过该客户端与ES集群10通信。
请参照图2,图2是本申请实施例提供的一种数据索引方法的流程示意图,该方法可以应用于部署有任一ES节点的服务器,也可以应用于与ES集群独立的服务器。数据索引方法的其中一部分步骤可以由独立于ES集群的服务器执行,另一部分步骤由部署有ES节点的服务器执行,本实施例对此没有限制。为便于描述,下文将执行本实施例提供的数据索引方法的服务器定义为“目标服务器”。
下面将对数据索引方法的各个步骤进行描述。
步骤S21,获取需要***指定索引文件的多条待***数据记录。
步骤S22,根据从ES集群中获取的指定索引文件的元数据信息,确定上指定索引文件的分片规则,根据分片规则从指定索引文件包括的多个主分片中确定每条待***数据记录所属的目标主分片。
在本实施例中,ES集群10存储有至少一个索引文件,比如上述示例中的索引文件A。在实施时,多条待***数据记录可以根据实际情况预先确定,并从相应的外部数据库或第三方存储***(例如,HDFS、Hive表等)中获取。此外,还可以预先确定需要将多条待***数据记录***哪个索引文件中,所确定的索引文件即为指定索引文件。
在本实施例中,各个ES节点均存储有ES集群的元数据信息,每个ES节点存储的元数据信息包括ES集群中各索引文件的元数据信息。
实施过程中,目标服务器可以从任一ES节点预先获取指定索引文件的元数据信息,其中包括指定索引文件中各个分片的标识、分片的数量、分片的分布信息及分片规则等。在一种情况下,如果目标服务器是部署有ES节点的服务器,则可以从本服务器的ES节点中获取指定索引文件的元数据信息。
其中,分片规则又称路由(routing)规则或路由策略,该路由规则中指定了路由字段,该路由字段可以由用户自定义设置。此外,在用户未定义该路由字段的情况下,可以默认采用数据记录的id字段作为该路由字段。
目标服务器在获取到多条待***数据记录时,可以根据预先获取的指定索引文件的元数据信息确定ES集群10中是否存在指定索引文件,如果存在,则根据指定索引文件的元数据信息确定指定索引文件的路由策略所使用的路由字段,进而根据每条待***数据记录的路由字段的值来确定该待***数据记录所属的主分片,所确定的主分片即为上述的目标主分片。例如,可以对每条待***数据记录的路由字段的值做哈希,并采用得到的哈希值对指定索引文件包括的分片数量取余,得到一余数,该余数所指示的分片即为该数据记录所属的目标主分片。
步骤S23,针对确定的每个目标主分片,通过与ElasticSearch集群中的ElasticSearch服务进程相互独立的数据***进程,从ElasticSearch集群中存储有目标主分片的目标节点将目标主分片备份到本地,将属于目标主分片的每条待***数据记录***备份的目标主分片中,得到目标新分片,并将目标节点上的目标主分片替换成目标新分片。
其中,数据***进程与ES集群10中的各个ES服务进程相互独立,互不干扰。数据***进程可以和ES服务进程运行于相同的服务器上,也可以运行于不同的服务器上,本实施例对此没有限制。
在本实施例中,预先获取的指定索引文件的元数据信息包含与每个ES节点对应的分片数组,该分片数组记录了由该ES节点管理的主分片的标识。例如前述的示例中,ES节点0对应的分片数组包括0和3两个标识,ES节点1对应的分片数组包括1和4两个标识,ES节点2对应的分片数组包括2和5两个标识。如此,可以将包含有上述得到的余数的分片数组所对应的节点确定为管理目标主分片的ES节点,该ES节点所在的服务器即为目标主分片所在的目标节点。
每确定一个目标主分片及其所在的目标节点,可以从目标节点复制一份该目标主分片到本地,复制的目标主分片即为步骤S23中备份的目标主分片。其中,备份的目标主分片包括多个部分,例如,该目标主分片的分片数据、索引状态数据state以及分片日志文件translog。其中,分片日志文件translog记录有未被持久化到磁盘中的操作记录。
为了确保目标主分片的完备性,在将属于目标主分片的每条待***数据记录***备份的目标主分片中之前,可以由数据***进程调用ES内部提供的恢复(Recovery)API(Application Programming Interface,应用程序编程接口),将分片日志文件中记录的数据更新到备份的目标主分片中。
在本实施例中,在将分片日志文件translog中的数据更新到备份的目标主分片之后,数据***进程可以为属于目标主分片的每条待***数据记录建立索引数据,并调用ES内部的主分片写入API,将建立的索引数据写入备份的目标主分片中。其中,主分片写入API可以是ES提供的TransportShardBulkAction类中的shardOperationOnPrimary接口。
通过图2所示步骤,将目标节点上的目标主分片备份到本地,通过与ES服务进程相互独立的数据***进程来***属于该目标主分片的待***数据记录,再将目标节点上的目标主分片替换成得到的目标新分片,从而将数据***过程和ES服务进程提供的服务独立开来,彼此互不干扰。
并且,在本地进行数据***,避免了数据***过程中因为各个ES服务进程之间的交互(即,多次网络I/O)导致的数据***效率低的问题。此外,采用上述设计,只需将目标节点上的目标主分片替换成目标新分片,已经检索到新***的数据记录,而可以不必等待副本分片更新完毕,减少了用户的等待时长,改善了用户体验。
可选地,在本实施例中的一种实施方式中,可以采用一个数据***进程来实现多条待***数据记录的***。
在又一种实施方式中,为了进一步提高效率,可以分别创建与所确定的多个目标主分片分别对应的多个数据***进程,多个数据***进程并行地执行上述步骤S23。
进一步地,为了减少数据在网络中的传输,可以将上述的多个数据***进程中的每一个创建在该数据***进程对应的目标主分片所在的目标节点上。例如,假设从ES集群10中确定了目标主分片0,目标主分片0由ES节点0管理,则可以在ES节点0所在的服务器上创建一个数据***进程,并通过该数据***进程来将属于目标主分片0的待***数据记录***到备份的目标主分片0中。如此,在对目标主分片0进行备份时,可以直接从本地复制并保存,在得到目标新分片后也可以直接替换位于本地的目标主分片,使得复制的目标主分片0以及进行数据***后得到的目标新分片均可以不必经过网络传输。
在本实施例中,可以采用计算框架来实现待***数据记录的获取及切分,即,步骤S21和步骤S22可以采用计算框架实现。其中,计算框架可以是,但不限于,MapReduce、Flink、Kafka流式计算框架等。
在实施时,可以将属于同一主分片的待***数据记录的***划分为计算框架的一个逻辑任务。以MapReduce为例,可以在Map阶段按照每条待***数据记录的路由字段的值来对多条待***数据记录进行分流,具体可以由Mapper来实现;将属于同一主分片的待***数据记录汇总到一个Reducer中进行处理,对应地,Reducer的个数和指定索引文件包括的主分片的数量相同。进一步地,后文描述的数据***过程也可以由Reducer来进行。
以Flink为例,可以将属于同一主分片的待***数据记录sink到同一个进程中进行处理。以Kafka流式计算为例,可以将属于同一主分片的待***数据记录分派到同一个partion中进行处理。
可选地,考虑到ES集群内存中通常加载有各个主分片及其对应的副本分片的数据,在将目标节点的目标主分片替换成目标新分片之后,ES集群内存中的数据将与指定索引文件的实际数据不符。因此,本实施例提供的数据索引方法还可以包括以下步骤:
在指定索引文件中的至少一个主分片被替换时,将ES集群内存中的数据与指定索引文件同步。
具体地,可以在将任意一个目标主分片替换成对应的目标新分片时,将ES集群内存中的数据与指定索引文件同步;也可以在将所有的目标主分片分别替换成对应的目标新分片时,将ES集群内存中的数据与指定索引文件同步;还可以在部分目标主分片分别替换成对应的目标新分片时,将ES集群内存中的数据与指定索引文件同步,本实施例对此没有限制。
详细地,ES集群10中的每个索引文件在被打开时,该索引文件的各个主分片及副本分片中的部分数据将会被加载到ES集群10的内存中。对应地,在该索引文件被关闭时,ES集群10内存中的该索引文件的数据也将被释放。基于此,可以通过如下步骤来实现ES集群10内存中的数据与指定索引文件的同步:
首先,在指定索引文件中的至少一个主分片被替换时,关闭指定索引文件,释放ElasticSearch集群10内存中的数据。
然后,打开指定索引文件,重新加载指定索引文件的各主分片及各副本分片的数据到内存中,使ElasticSearch集群内存中的数据和指定索引文件同步。
其中,数据***进程可以调用ES内部的下线API来关闭指定索引文件,调用ES内部的上线API来将关闭的指定索引文件打开。具体地,下线API例如可以是http://集群IP地址:端口号/indexname/_open,上线API例如可以是http://集群IP地址:端口号/indexname/_close。其中,indexname是指定索引文件的名称。
在本实施例中,ES集群10中的各个ES服务进程在指定索引文件被打开时,重新加载指定索引文件的各个主分片及对应的副本分片中的部分数据到内存中,各个ES服务进程在加载过程中会对加载的主分片及对应的副本分片进行检测,如果检测到任一主分片与其对应的副本分片的数据不一致,将触发ES集群10自带的内部副本机制,从而实现该主分片和副本分片的数据同步。
下面以上述的6条待***数据记录[0,1,2,3,4,5,6]为例,结合图1所示的ES集群10及图3所示的流程图,对本实施例提供的数据索引方法做进一步的阐述。
一、目标服务器首先根据获取到的ES集群10的元数据信息确定ES集群10中是否创建有索引文件A(即,指定索引文件)。如果是,则进一步获取索引文件A的元数据信息,其中包含索引文件A的分片规则。
二、目标服务器通过计算框架逐条获取待***数据记录[0,1,2,3,4,5,6],并根据预先获取索引文件A的元数据信息确定索引文件A的路由规则所使用的路由字段为id字段,则分别对获取到的每条数据记录的id字段的值做哈希,并将得到的哈希值对索引文件A包括的主分片的数量6取余,得到相应的余数值。
例如,根据待***数据记录0得到的余数值为0,表示待***数据记录0属于主分片0;类似地,可以确定待***数据记录1属于主分片1,待***数据记录2属于主分片2,待***数据记录3属于主分片3,待***数据记录4属于主分片4,待***数据记录5属于主分片5。
三、根据索引文件A的元数据信息确定主分片0和3由ES节点0管理,主分片1和4由ES节点1管理,主分片2和5由ES节点2管理。
四、针对主分片0(即:目标主分片),创建与ES服务进程相互独立的数据***进程P0,通过该数据***进程P0从ES节点0所在的服务器备份一份主分片0,并保存在本地(例如图3所示的本地备份文件);
调用ES内部的recovery API,将备份的主分片0中的日志文件translog中的数据恢复到备份的主分片0中;再调用ES内部的主分片写入API,建立待***数据记录0的索引信息,并将该索引信息***到备份的主分片0,得到新分片0’,再将由ES节点0管理的主分片0替换成新分片0’。
五、针对主分片1,创建与ES服务进程相互独立的数据***进程P1,通过该数据***进程P1从ES节点1所在的服务器备份一份主分片1,并保存在本地;调用ES内部的recovery API,将备份的主分片1中的日志文件translog中的数据恢复到备份的主分片1中,再调用ES内部的主分片写入API,建立待***数据记录1的索引信息,并将建立的索引信息***备份的主分片1中,得到新分片1’,再将由ES节点1管理的主分片1替换成新分片1’。
六、针对主分片2,创建与ES服务进程相互独立的数据***进程P2,通过该数据***进程P2从ES节点2所在的服务器备份一份主分片2,并保存在本地;调用ES内部的recovery API,将备份的主分片2中的日志文件translog中的数据恢复到备份的主分片2中,再调用ES内部的主分片写入API来建立待***数据记录2的索引信息,并将建立的索引信息***备份的主分片2中,得到新分片2’,再将由ES节点2管理的主分片2替换成新分片2’。
类似地,针对主分片3-5可以采用类似上述流程的方式进行处理,直至将待***数据记录0-5***索引文件A中。
七、在索引文件A中的任意一个主分片被新分片替换时,将索引文件A关闭以将ES集群10内存中的索引文件A的数据释放,并重新打开索引文件A,以将索引文件A的各主分片及相应副本分片中的数据重新加载到ES集群10的内存中。
八、在重新加载索引文件A的各主分片及相应副本分片的数据到ES集群10内存的过程中,ES服务进程如果检测到任意一个主分片与其对应的副本分片的数据不一致,则触发ES集群10的内部副本机制。
请参照图4,图4示出了本实施例提供的一种目标服务器40的结构框图。目标服务器40包括处理器41及机器可读存储介质42。处理器41与机器可读存储介质42可以经由***总线43通信。并且,机器可读存储介质42存储有机器可执行指令,通过读取并执行机器可读存储介质42中的机器可执行指令,处理器41可以执行上文描述的数据索引方法。
本文中提及的机器可读存储介质42可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,比如可执行指令、数据等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
请参照图5,图5是本申请实施例提供的一种数据索引装置50的方框示意图。数据索引装置50包括至少一个可以以软件形式存储于机器可读存储介质42中的功能模块。从功能上划分,数据索引装置50可以包括数据分流模块51和数据***模块52。
其中,数据分流模块51用于获取需要***指定索引文件的多条待***数据记录;从ElasticSearch集群中获取指定索引文件的元数据信息,根据元数据信息确定指定索引文件的分片规则,根据分片规则从指定索引文件包括的多个主分片中确定每条待***数据记录所属的目标主分片。
数据***模块52用于针对确定的每个目标主分片,通过与ElasticSearch集群中的ElasticSearch服务进程相互独立的数据***进程,从ElasticSearch集群中存储有目标主分片的目标节点将目标主分片备份到本地,将属于目标主分片的每条待***数据记录***备份的目标主分片中,得到目标新分片,并将目标节点上的目标主分片替换成目标新分片。
可选地,数据***模块52可以调用ElasticSearch集群提供的主分片写入API,建立属于目标主分片的每条待***数据记录的索引数据,并将该索引数据写入备份的目标主分片中。
可选地,指定索引文件的分片规则可以包括指定索引文件的路由策略使用的路由字段。在此情况下,数据分流模块51可以根据每条待***数据记录的路由字段的值确定该条待***数据记录所属的目标主分片。
可选地,数据索引装置50还可以包括同步模块53。
同步模块53用于在指定索引文件中的至少一个主分片被替换时,关闭指定索引文件,释放ElasticSearch集群内存中的数据;打开指定索引文件,重新加载指定索引文件的各主分片及各副本分片的数据到内存中,使ElasticSearch集群内存中的数据和指定索引文件同步。
可选地,同步模块53可以在重新加载指定索引文件的各主分片及各副本分片的数据到内存中的过程中,若检测到任一主分片和该主分片对应的副本分片的数据不一致,则触发ElasticSearch集群10的内部副本机制,对该副本分片的数据和该主分片的数据进行同步。
可选地,备份的目标主分片可以包括分片日志文件,在此情况下,数据索引装置50还可以包括更新模块54。
更新模块54用于在将属于目标主分片的每条待***数据记录***备份的目标主分片中之前,将分片日志文件中记录的数据更新到备份的目标主分片中。
关于上述各个功能模块的详细描述具体可以参照前文中对相关步骤的描述。
综上所述,本申请实施例提供一种数据索引方法及装置,对于属于同一主分片的待***数据记录,将该待***数据记录所属的主分片备份到本地,并通过与ES集群中的ES服务进程相互独立的数据***进程来将该待***数据记录***指定索引文件中。一方面可以确保数据***过程中与ES集群中的ES服务进程相互独立,从而避免对ES服务进程提供的数据查询服务造成影响,或受到ES服务进程提供的数据查询服务的限制。另一方面,可以避免数据***过程中各个ElasticSearch服务进程之间的数据传输,从而提高数据***效率。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (12)
1.一种数据索引方法,其特征在于,所述方法包括:
获取需要***指定索引文件的多条待***数据记录;
根据从ElasticSearch集群中获取的所述指定索引文件的元数据信息,确定所述指定索引文件的分片规则,根据所述分片规则从所述指定索引文件包括的多个主分片中确定每条待***数据记录所属的目标主分片;
针对确定的每个目标主分片,通过与所述ElasticSearch集群中的ElasticSearch服务进程相互独立的数据***进程,从所述ElasticSearch集群中存储有所述目标主分片的目标节点将所述目标主分片备份到本地,将属于所述目标主分片的每条待***数据记录***备份的目标主分片中,得到目标新分片,并将所述目标节点上的所述目标主分片替换成所述目标新分片。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述指定索引文件中的至少一个主分片被替换时,关闭所述指定索引文件,释放所述ElasticSearch集群内存中的数据;
打开所述指定索引文件,重新加载所述指定索引文件的各主分片及各副本分片的数据到所述内存中,使所述ElasticSearch集群内存中的数据和所述指定索引文件同步。
3.根据权利要求2所述的方法,其特征在于,所述重新加载所述指定索引文件的各主分片及各副本分片的数据到所述内存中的步骤,包括:
在检测到任一主分片和该主分片对应的副本分片的数据不一致时,触发所述ElaSticSearch集群的内部副本机制,对该副本分片的数据和该主分片的数据进行同步。
4.根据权利要求1-3中任意一项所述的方法,其特征在于,所述备份的目标主分片包括分片日志文件;所述方法还包括:
在将属于所述目标主分片的每条待***数据记录***备份的目标主分片中之前,将所述分片日志文件中记录的数据更新到所述备份的目标主分片中。
5.根据权利要求1-3中任意一项所述的方法,其特征在于,所述将属于所述目标主分片的每条待***数据记录***备份的目标主分片中的步骤,包括:
建立属于所述目标主分片的每条待***数据记录的索引数据,并调用所述ElasticSearch集群提供的主分片写入API,将该索引数据写入所述备份的目标主分片中。
6.根据权利要求1-3中任意一项所述的方法,其特征在于,所述指定索引文件的分片规则包括所述指定索引文件的路由策略使用的路由字段;
所述根据所述分片规则从所述指定索引文件包括的多个主分片中确定每条待***数据记录所属的目标主分片的步骤,包括:
根据每条待***数据记录的所述路由字段的值确定该条待***数据记录所属的目标主分片。
7.一种数据索引装置,其特征在于,包括:
数据分流模块,用于获取需要***指定索引文件的多条待***数据记录;从ElasticSearch集群中获取所述指定索引文件的元数据信息,根据所述元数据信息确定所述指定索引文件的分片规则,根据所述分片规则从所述指定索引文件包括的多个主分片中确定每条待***数据记录所属的目标主分片;
数据***模块,用于针对确定的每个目标主分片,通过与所述ElasticSearch集群中的ElasticSearch服务进程相互独立的数据***进程,从所述ElasticSearch集群中存储有所述目标主分片的目标节点将所述目标主分片备份到本地,将属于所述目标主分片的每条待***数据记录***备份的目标主分片中,得到目标新分片,并将所述目标节点上的所述目标主分片替换成所述目标新分片。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
同步模块,用于在所述指定索引文件中的至少一个主分片被替换时,关闭所述指定索引文件,释放所述ElasticSearch集群内存中的数据;打开所述指定索引文件,重新加载所述指定索引文件的各主分片及各副本分片的数据到所述内存中,使所述ElasticSearch集群内存中的数据和所述指定索引文件同步。
9.根据权利要求8所述的装置,其特征在于,所述同步模块在重新加载所述指定索引文件的各主分片及各副本分片的数据到所述内存中的过程中,若检测到任一主分片和该主分片对应的副本分片的数据不一致,则触发所述ElasticSearch集群的内部副本机制,对该副本分片的数据和该主分片的数据进行同步。
10.根据权利要求7-9中任意一项所述的装置,其特征在于,所述备份的目标主分片包括分片日志文件;所述装置还包括:
更新模块,用于在将属于所述目标主分片的每条待***数据记录***备份的目标主分片中之前,将所述分片日志文件中记录的数据更新到所述备份的目标主分片中。
11.根据权利要求7-9中任意一项所述的装置,其特征在于,所述数据***模块建立属于所述目标主分片的每条待***数据记录的索引数据,并调用所述ElasticSearch集群提供的主分片写入API,将该索引数据写入所述备份的目标主分片中。
12.根据权利要求7-9中任意一项所述的装置,其特征在于,所述指定索引文件的分片规则包括所述指定索引文件的路由策略使用的路由字段;
所述数据分流模块根据每条待***数据记录的所述路由字段的值确定该条待***数据记录所属的目标主分片。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910627141.9A CN110442645B (zh) | 2019-07-11 | 2019-07-11 | 数据索引方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910627141.9A CN110442645B (zh) | 2019-07-11 | 2019-07-11 | 数据索引方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110442645A true CN110442645A (zh) | 2019-11-12 |
CN110442645B CN110442645B (zh) | 2020-09-15 |
Family
ID=68430314
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910627141.9A Active CN110442645B (zh) | 2019-07-11 | 2019-07-11 | 数据索引方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110442645B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112019605A (zh) * | 2020-08-13 | 2020-12-01 | 上海哔哩哔哩科技有限公司 | 数据流的数据分发方法和*** |
CN114490523A (zh) * | 2021-12-31 | 2022-05-13 | 医渡云(北京)技术有限公司 | 一种数据写入方法、装置、存储介质及设备 |
WO2023273544A1 (zh) * | 2021-06-30 | 2023-01-05 | 中国民航信息网络股份有限公司 | 日志文件的存储方法、装置、设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130290249A1 (en) * | 2010-12-23 | 2013-10-31 | Dwight Merriman | Large distributed database clustering systems and methods |
US20160217161A1 (en) * | 2015-01-25 | 2016-07-28 | Iguazio Systems Ltd. | Virtual data objects |
CN106407376A (zh) * | 2016-09-12 | 2017-02-15 | 杭州数梦工场科技有限公司 | 重建索引方法及装置 |
CN108897865A (zh) * | 2018-06-29 | 2018-11-27 | 北京奇虎科技有限公司 | 分布式集群的索引副本数量评估方法及装置 |
-
2019
- 2019-07-11 CN CN201910627141.9A patent/CN110442645B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130290249A1 (en) * | 2010-12-23 | 2013-10-31 | Dwight Merriman | Large distributed database clustering systems and methods |
US20160217161A1 (en) * | 2015-01-25 | 2016-07-28 | Iguazio Systems Ltd. | Virtual data objects |
CN106407376A (zh) * | 2016-09-12 | 2017-02-15 | 杭州数梦工场科技有限公司 | 重建索引方法及装置 |
CN108897865A (zh) * | 2018-06-29 | 2018-11-27 | 北京奇虎科技有限公司 | 分布式集群的索引副本数量评估方法及装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112019605A (zh) * | 2020-08-13 | 2020-12-01 | 上海哔哩哔哩科技有限公司 | 数据流的数据分发方法和*** |
CN112019605B (zh) * | 2020-08-13 | 2023-05-09 | 上海哔哩哔哩科技有限公司 | 数据流的数据分发方法和*** |
WO2023273544A1 (zh) * | 2021-06-30 | 2023-01-05 | 中国民航信息网络股份有限公司 | 日志文件的存储方法、装置、设备和存储介质 |
CN114490523A (zh) * | 2021-12-31 | 2022-05-13 | 医渡云(北京)技术有限公司 | 一种数据写入方法、装置、存储介质及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110442645B (zh) | 2020-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107391758B (zh) | 数据库切换方法、装置及设备 | |
CN102395962B (zh) | 对数据库表的哈希和列表组合划分 | |
JP2020522036A5 (zh) | ||
CN104813321B (zh) | 在分布式对象存储生态***中的去耦合的内容以及元数据 | |
CN106484906B (zh) | 一种分布式对象存储***闪回方法及装置 | |
CN110442645A (zh) | 数据索引方法及装置 | |
CN103902410B (zh) | 云存储***的数据备份加速方法 | |
CN106021016A (zh) | 在快照之间的虚拟时间点访问 | |
CN102158540A (zh) | 分布式数据库实现***及方法 | |
CN111596922A (zh) | 基于redis实现自定义缓存注解的方法 | |
CN110192198A (zh) | 访问存储的资源的安全性 | |
CN105956123A (zh) | 基于局部更新软件的数据处理方法及装置 | |
US20160147569A1 (en) | Distributed technique for allocating long-lived jobs among worker processes | |
CN106605217B (zh) | 用于将应用从一个站点移动到另一站点的方法和*** | |
CN108446308A (zh) | 可扩展分布式数据库的***和方法 | |
CN112765182A (zh) | 云服务器集群间的数据同步方法及装置 | |
CN104166661B (zh) | 数据存储***和数据存储方法 | |
CN103918230A (zh) | 对网络设备背景中的转发数据库进行同步 | |
CN110427364A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN105208060A (zh) | 业务数据同步方法、装置及*** | |
CN107580032A (zh) | 数据处理方法、装置及设备 | |
CN106873902B (zh) | 一种文件存储***、数据调度方法及数据节点 | |
CN110199277A (zh) | 在数据资源中包括元数据 | |
CN109271545A (zh) | 一种特征检索方法及装置、存储介质和计算机设备 | |
CN105095392B (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 |