CN112612865A - 一种基于Elasticsearch的文档存储方法和装置 - Google Patents
一种基于Elasticsearch的文档存储方法和装置 Download PDFInfo
- Publication number
- CN112612865A CN112612865A CN202011496160.1A CN202011496160A CN112612865A CN 112612865 A CN112612865 A CN 112612865A CN 202011496160 A CN202011496160 A CN 202011496160A CN 112612865 A CN112612865 A CN 112612865A
- Authority
- CN
- China
- Prior art keywords
- field
- document
- routing
- fragment
- stored
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 53
- 239000012634 fragment Substances 0.000 claims abstract description 198
- 238000012545 processing Methods 0.000 description 7
- 238000004590 computer program Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
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/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请公开了一种基于Elasticsearch的文档存储方法和装置,所述方法包括:在接收到待存储文档时,确定所述待存储文档存储所用的路由字段;获取所述待存储文档的所述路由字段的字段值;判断所述字段值对应的分片是否存在;当所述字段值对应的分片不存在时,创建所述字段值对应的分片;将所述待存储文档保存在所述字段值对应的分片中。本申请方案,在Elasticsearch文档存储前无需费时对已有分片中的数据量进行检测和判断,创建分片时无需重复创建同一路由字段的索引,优化了分片分布方式,减少了用户等待时长,提高了文档存储效率。
Description
技术领域
本申请涉及计算机技术领域,特别是一种基于Elasticsearch的文档存储方法和装置。
背景技术
全文搜索引擎是目前最广泛应用的主流搜索引擎,具有良好的搜索性能。Elasticsearch(通常缩写为ES)是一种使用JavaScript Objection Notation格式(后文简写为JSON格式)描述的全文搜索系统,是一个分布式、具有集群思想的搜索系统。Elasticsearch系统中,文档是数据存储和搜索的最小单元,而分片则是文档存储的载体,分片基于索引进行创建,索引是分片的逻辑集合。
目前,相关技术中,采用Elasticsearch系统默认的文档存储方法,在将文档存储到已有分片中之前,对已有分片中的数据量进行检测以判断是否新建分片,若要新建分片,则每次按缺省数量创建在默认路由字段的不同的索引下。该方法,在Elasticsearch文档存储前费时过多,且重复创建同一默认路由字段的索引,耗时长,效率低,影响了用户的使用体验。
发明内容
本申请提供一种基于Elasticsearch的文档存储方法和装置,根据本申请实施例的第一方面,提供一种基于Elasticsearch的文档存储方法,包括:
在接收到待存储文档时,确定所述待存储文档存储所用的路由字段;
获取所述待存储文档的所述路由字段的字段值;
判断所述字段值对应的分片是否存在;
当所述字段值对应的分片不存在时,创建所述字段值对应的分片;
将所述待存储文档保存在所述字段值对应的分片中。
根据本申请实施例的第二方面,提供一种基于Elasticsearch的文档存储装置,包括确定单元、获取单元、判断单元、创建单元和存储单元:
所述确定单元,用于在接收到待存储文档时,确定所述待存储文档存储所用的路由字段;
所述获取单元,获取所述待存储文档的所述路由字段的字段值;
所述判断单元,判断所述字段值对应的分片是否存在;
所述创建单元,当所述字段值对应的分片不存在时,创建所述字段值对应的分片;
所述存储单元,将所述待存储文档保存在所述字段值对应的分片中。
在本申请所提供的技术方案中,一个路由字段的索引下有若干个分片,该索引下同一分片中所存储文档的该路由字段的字段值相同,该索引下不同分片中所存储文档的该路由字段的字段值不同。
在存储Elasticsearch文档时,根据其所用路由字段的字段值,将其保存在这一路由字段的索引下该字段值对应的分片中;若其所用路由字段的字段值对应的分片不存在,则直接在这一路由字段的索引下增建该字段值的分片,以实现所述文档的存储。
本申请所提供的基于Elasticsearch的文档存储方法,在文档存储前无需费时对已有分片中的数据量进行检测和判断,创建分片时无需重复创建同一路由字段的索引,优化了分片分布方式,减少了用户等待时长,提高了Elasticsearch文档存储的效率。
附图说明
图1为本申请实施例所提供的一种基于Elasticsearch的文档存储方法流程图;
图2为本申请方案中判断待存储文档路由字段的字段值对应的分片是否存在的方法流程图;
图3为本申请方案中在待存储文档路由字段的索引不存在时存储该文档的方法流程图;
图4为本申请方案中在待存储文档路由字段的索引存在而其字段值对应分片不存在时存储该文档的方法流程图;
图5为本申请实施例所提供的一种基于Elasticsearch的文档存储装置所在网络设备的硬件结构图;
图6为本申请实施例所提供的一种基于Elasticsearch的文档存储装置框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,介绍有关Elasticsearch文档的相关概念。文档是Elasticsearch系统中可搜索数据的最小单元,也是存储数据的最小单元。
Elasticsearch文档以JSON格式描述,其描述方式可以概括为“key:value”,其中key称为字段,value称为key字段的字段值,例如,Elasticsearch文档中的一条语句为“IP:192.168.0.1”,则此文档中包含IP字段,此文档IP字段的字段值为192.168.0.1。
一个Elasticsearch文档中包含多个字段,其中用以指示文档应当被存储的具体位置的字段称为文档的路由字段。文档的路由字段可以由技术人员,在存储文档时直接编写在源码中,如果没有在源码中指明文档存储所用的路由字段,则使用系统默认的路由字段指示其存储位置。
在Elasticsearch系统中,文档具体存储于各个分片中,每个分片都在所属的索引下,分片是基于索引进行创建的,索引是分片的逻辑集合。
目前,相关技术中均采用Elasticsearch系统的默认方式执行文档的存储,在此默认方式中,所有文档均使用ID字段作为其路由字段。
每一个Elasticsearch文档中必有ID字段,其字段值是由Elasticsearch系统自动生成的一个URL(Uniform Resource Locator,统一资源定位系统)安全,Base64编码的UUIDs(Universally Unique Identifier,通用唯一识别码),Elasticsearch系统为各个文档所生成的ID字段的字段值彼此不冲突。
在默认的Elasticsearch文档存储方法中,会对已创建的分片预设数据量阈值,基于待存储文档的ID字段的字段值,首先由hash算法为待存储文档分配一个已有的分片,然后对这一分片中的现有数据量进行检测,并与预设的数据量阈值进行比较。
如果该分片当前的数据量没有超过阈值,则在该分片中存储所述待存储文档;如果该分片当前的数据量超过了阈值,则向Elasticsearch系统发起请求,等待系统响应并创建新的拓展索引后,在此拓展索引下的新分片中存储所述待存储文档。
为了清晰说明Elasticsearch系统默认方式下的文档存储方法,下面描述一个简单的示例。
一个Elasticsearch系统中,所有文档按默认方式使用ID字段进行文档存储的路由,每个索引下的分片数量均为系统缺省值:3,预设每个分片的数据量阈值为10G。当前已有索引1和索引2,索引1下有分片0、1、2,索引2下有分片3、4、5,如下表1所示。
表1
接收到一个待存储文档后,首先,基于其ID字段的字段值进行hash换算,为其分配上述分片0至5中的任一个,如分片3,以进行后续的检测和存储;然后检测分片3中的数据量,为10.2G,超过预设的分片数据量阈值10G,请求创建新的分片;等待系统响应并创建索引3以及索引3下的分片6、7、8,如下表2所示;再由此待存储文档ID字段值进行hash换算,确定其应当存储在分片6中,检测得到分片6中现有数据量小于阈值,在分片6中保存此待存储文档。
表2
Elasticsearch系统提供的默认文档存储方法,虽然为技术人员节约了编程时间,但其在文档存储前对已有分片中数据量的检测判断,以及在创建新分片时对系统响应以及新索引创建的等待,都消耗了很多时间,降低了Elasticsearch文档存储的效率,影响了用户的使用体验。
在本申请的技术方案中,不同于Elasticsearch系统默认的文档存储方法,可不再使用默认的ID字段作为文档存储的路由字段,而是根据具体的应用场景,自定义一个适用于该场景的路由字段,例如,在记录服务器工作日志的应用场景下,可使用时间戳Date字段作为存储文档的路由字段;在文档分属多种数据类型的应用场景下,可使用Type类型字段作为待存储文档的路由字段;在记录员工相关信息的应用场景下,可使用实际字段值为员工姓名的关键词Keyword字段作为待存储的路由字段等。
此外,不同于相关技术中,每次创建新分片都需要创建新索引,且每个索引下的分片数量均为缺省值的Elasticsearch系统默认方法,本申请方案中,基于实际应用场景确定的一个路由字段可只创建一个索引,且不限制该索引下的分片数量,该路由字段不同字段值对应的分片均可创建在这一个索引下。
换言之,在本申请方案中,以一个应用于记录服务器工作日志的Elasticsearch系统为例,预设时间戳Date字段为文档存储的路由字段,Elasticsearch系统中可仅有Date这一个索引,Date索引下的分片数量不做限制。
假设当前Date索引下已有分片Date1、Date2,在接收到待存储文档时,若要创建分片,则在Date索引下增建分片Date3,如下表3所示。
表3
基于上述,本申请提供一种基于Elasticsearch的文档存储方法,应用任一运行Elasticsearch系统的服务器或个人终端,所述方法如图1所示,包括:
步骤102,在接收到待存储文档时,确定所述待存储文档存储所用的路由字段。
对于一个Elasticsearch待存储文档的路由字段的确定,如前文所述,可以由技术人员编写在文档存储的源码中,但这种直接在代码中写明文档存储所用路由字段的方法既繁琐,且不易于后期修改或拓展文档存储所用的理由字段。
因此,在本申请所述方案中,待存储文档存储所用的路由字段,可以根据Elasticsearch系统实际的应用场景,预先设置在Elasticsearch配置文件中,所述Elasticsearch配置文件适用于Elasticsearch系统全局,除了保存有本申请方案中所预设的文档存储的路由字段外,还保存有索引数据的存储路径、数据存储的压缩设置等,起着为Elasticsearch系统的各部分使能等作用。
在文档存储时配置文件的加载是必须的环节,本申请方案中,每次接收到待存储文档时,加载Elasticsearch配置文件以确定待存储文档存储所用的路由字段,并不会降低文档存储的效率,反而省去了配置相关代码的繁琐,易于后期的修改、拓展等。
其他确定待存储文档存储所用的路由字段的方法亦可运用于本申请方案中,本申请对此不做限定。
步骤104,获取所述待存储文档的所述路由字段的字段值。
由步骤102确定所述待存储文档存储所用的路由字段后,读取待存储文档中所述路由字段的字段值,该路由字段的字段值决定了待存储文档最终存储的具体分片位置。
步骤106,判断所述字段值对应的分片是否存在。
由步骤104获取所述待存储文档的路由字段的字段值后,应当判断该字段值对应的分片是否存在,鉴于本申请方案中,Elasticsearch系统中一个路由字段只有一个索引,所述字段值对应的分片不存在的情况包括以下两种,
所述路由字段的索引不存在;
或,所述路由字段的索引存在,但不存在待存储文档的所述字段值对应的分片。
步骤108,当所述字段值对应的分片不存在时,创建所述字段值对应的分片。
根据步骤106所述的两种所述字段值对应的分片不存在的情况,创建所述字段值对应的分片的方法分别是,
若Elasticsearch系统中所述路由字段的索引不存在,创建所述路由字段对应的索引,并在所述路由字段对应的索引下,创建所述字段值对应的分片;
若Elasticsearch系统中所述路由字段的索引存在,在所述路由字段对应的索引下,增建所述字段值对应的分片。
步骤110,将所述待存储文档保存在所述字段值对应的分片中。
相较于目前的相关技术,本申请所提供的基于Elasticsearch的文档存储方法,在文档存储前不需要对已有分片中的数据量进行检测和比较,创建新分片时无需重复创建同一路由字段的索引,有效节约了文档存储耗时,减少了用户等待时长,提升了用户使用体验。
此外,根据实际应用场景预设路由字段,根据文档的路由字段值确定对应分片,使得Elasticsearch系统中,一个路由字段的索引下,各个分片按该路由字段的不同字段值依次分列,优化了分片分布方式,有利于技术人员在后台的分片管理等。
上文所述方案中,步骤102,确定待存储文档存储所用的路由字段时,采用加载Elasticsearch配置文件,在所述配置文件中查询所述待存储文档存储所用的路由字段的方法,可能包括如下两种具体情况。
(1)Elasticsearch配置文件中保存的路由字段的数量为1:
当Elasticsearch系统应用于一种单一场景下,所述配置文件中只需保存针对这一种场景的一个路由字段即可,所有接收到的待存储文档都是该场景下的文档,加载配置文件,确定文档中的该路由字段作为存储所用的路由字段。
(2)Elasticsearch配置文件中保存的路由字段的数量大于1:
如果Elasticsearch系统应用在一个规模更大、更复杂的环境下,可能接收到不同应用场景下多种业务的待存储文档;在此情况下,于Elasticsearch配置文件中为每种业务的文档设置一个路由字段,保存各业务与其文档存储所用路由字段之间的映射关系。
在一种可选择的方式下,可以为不同业务的文档设置相应的业务标识,进而在Elasticsearch配置文件中保存各业务标识和路由字段之间的映射关系。
当接收到待存储文档时,可获取该待存储文档的业务标识,然后在配置文件中查找所述业务标识对应的路由字段,作为所述待存储文档存储所用的路由字段。
例如,记录服务器工作日志的业务文档的业务标识设置为1,统计员工信息的业务文档的业务标识设置为2;在Elasticsearch配置文件中预设业务标识为1的文档所使用的路由字段为时间戳Date字段,业务标识为2的文档所使用的路由字段为关键词Keyword字段。当接收到一待存储文档时,获取得到其业务标识为1,查询配置文件,确定其存储所用的路由字段为Date字段。
本申请方案中,步骤106,判断待存储文档的路由字段的字段值对应的分片是否存在的方法流程图,如图2所示,具体包括:
步骤1062,判断Elasticsearch系统中,所述待存储文档的所述路由字段的索引是否存在。
步骤1064,当Elasticsearch系统中,所述路由字段的索引不存在时,确定所述字段值对应的分片不存在。
在Elasticsearch系统中,判断待存储文档的路由字段的字段值对应的分片是否存在,以系统中是否存在所述路由字段的索引为先决条件;显然地,若系统中不存在所述路由字段的索引,则该路由字段的各个字段值对应的分片皆不会存在,可确定待存储文档所述路由字段的字段值对应的分片也不存在;此时应当先行创建该路由字段的索引,以在此索引下创建各个字段值对应的分片。
步骤1066,当Elasticsearch系统中所述路由字段的索引存在时,判断所述字段值对应的分片是否存在。
在Elasticsearch系统中已存在所述路由字段的索引时,仍不能确定所述字段值对应的分片是否已创建在此索引下,继续判断此索引下所述字段值对应的分片是否存在。
可选择地,一种判断所述字段值对应的分片是否存在的方法为,在已有分片创建时为其添加分片标识,所述分片标识具体为该分片中已存储文档的路由字段的字段值。
当判断现在待存储文档的所述路由字段的字段值对应的分片是否存在时,将所述待存储文档的所述路由字段的字段值,与已有分片的分片标识进行匹配;若匹配成功,则确定所述字段值对应的分片存在;若匹配失败,则确定所述字段值对应的分片不存在。
可选择地,另一种判断所述字段值对应的分片是否存在的方法为,在系统中设置已有分片信息表,记录已有分片与各路由字段的不同字段值之间的映射关系。
当判断现在待存储文档的所述路由字段的字段值对应的分片是否存在时,查询上述已有分片信息表,若存在所述字段值对应的分片信息,则确定所述字段值对应的分片存在;若不存在,则确定所述字段值对应的分片不存在。
上述判断方法,仅仅是判断特定字段值对应分片是否存在的方法中的部分示例。本申请方案中,对于特定字段值对应分片是否存在的具体判断方法不做限定。
为了使本领域技术人员更好地理解本申请中的技术方案,接下来结合附图,对基于Elasticsearch的文档存储方法作进一步的详细说明,后续描述的实施例仅仅是本申请的一部分实施例,而不是全部的实施例。
假设一个Elasticsearch系统,应用于记录服务器的工作日志,在其系统的配置文件中预设Elasticsearch文档存储的路由字段为时间戳Date字段。当前日期为10月1日,系统中暂时还没有分片,此时接收到待存储文档A,待存储文档A如下表4所示,其Date字段的字段值为1001,其ID字段的字段值为Elasticsearch系统自动生成的通用识别唯一码,表4中所示各字段的字段值仅用以示意说明。
Date | 1001 |
Type | Server Log |
Keyword | KeywordA |
ID | AXYCnAs2W7WSJJlynoia |
表4
如图3所示,为本申请方案中,基于Elasticsearch的待存储文档A进行存储的实施例流程图。
步骤302,确定待存储文档A存储所用的路由字段为Date字段。
在接收到待存储文档A时,加载Elasticsearch配置文件,得到预设的路由字段为时间戳Date字段,从而确定了待存储文档A进行存储时所使用的路由字段应为其Date字段。
步骤304,获取待存储文档A的Date字段的字段值:1001。
已确定待存储文档A保存时使用的路由字段为Date字段,读取待存储文档A中Date字段的字段值,在本实施例中,所述待存储文档A的Date字段的字段值为当前日期:1001,它表征待存储文档A是10月1日的服务器工作日志。
步骤306,判断Date字段的字段值:1001,对应的分片是否存在。
因为当前Elasticsearch系统中还没有路由字段Date的索引,故而也不存在Date字段值为1001对应的分片,能够确定待存储文档A的Date字段值1001,对应的分片暂时还不存在。
步骤308,当Date字段值1001对应的分片不存在时,创建所述字段值对应的分片。
处在Elasticsearch系统中还没有路由字段Date的索引的情况下,创建Date字段值1001对应的分片的过程,首先需要创建所述路由字段,Date字段的索引,即创建一个名为Date的索引,对该索引下的分片数量不做限制,该索引下的分片在索引创建完成后仍然可以增加或删除。
然后,将所述Date字段值1001对应的分片,相应地创建所述Date索引下,设置此分片的分片标识为1001。此时,Elasticsearch系统中有一个索引:Date索引,该索引下目前有一个分片标识为1001的分片。
步骤310,将待存储文档A保存在Date字段值1001对应的分片中。
10月1日当天,此Elasticsearch系统中所有的服务器工作日志,它们的Date字段的字段值都为1001,在完成上述步骤302至310后,同属于此日期的服务器工作日志在存储时,都能够顺利保存在上述Date字段值1001对应的分片中。
而当时间推至10月2日,此时Elasticsearch系统中已有Date索引下字段值为1001对应的一个分片,该分片中存储有若干个10月1日的服务器工作日志。此时接收到待存储文档B,如下表5所示,其Date字段值为1002,其ID字段值为系统自动生成的通用识别唯一码,表5中所示各字段的字段值仅用以示意说明。
Date | 1002 |
Type | Server Log |
Keyword | KeywordB |
ID | AXYCnAs2W7WSJJlynoiy |
表5
如图4所示,为本申请方案中,基于Elasticsearch的待存储文档B进行存储的实施例流程图。
步骤402,确定待存储文档B存储所用的路由字段为Date字段。
在接收到待存储文档B时,加载Elasticsearch配置文件,得到预设的路由字段为时间戳Date字段,从而确定待存储文档B进行存储时所使用的路由字段应为其Date字段。
步骤404,获取待存储文档B的Date字段的字段值:1002。
已确定待存储文档B保存时使用的路由字段为Date字段,读取待存储文档B中Date字段的字段值,在本实施例中,所述待存储文档B的Date字段的字段值为当前日期:1002,它表征待存储文档B是10月2日的服务器工作日志。
步骤406,判断Date字段的字段值:1002,对应的分片是否存在。
虽然可以得到当前Elasticsearch系统在Date索引下已存在分片,但并不意味Date字段值1002对应的分片就存在,因而在此情况下,判断Date字段值1002对应的分片是否存在的方法如下:
将获取的待存储文档B的Date字段值1002与Elasticsearch系统已有分片的分片标识进行匹配,此时系统仅有上述步骤402至410所创建的一个分片,该已有分片的分片标识为1001,将Date字段值1002,与之匹配,得到二者匹配失败的结果,故Date字段值1002对应的分片并不存在。
步骤408,当Date字段值1002对应的分片不存在时,创建所述字段值对应的分片。
Date索引已存在,将所述Date字段值1002对应的分片,相应地创建在所述Date索引下,设置此分片的分片标识为1002。此时,Elasticsearch系统中有一个索引:Date索引,该索引下目前有两个分片标识分别为1001和1002的分片。
步骤410,将待存储文档B保存在Date字段值1002对应的分片中。
10月2日当天,所有基于Elasticsearch的服务器工作日志文档,其Date字段值均为1002,它们在存储时,都能够顺利保存于上述步骤402至410所创建的Date字段值1002对应的分片中。
相应地,Date字段值1003、1004对应的分片,在当日基于Elasticsearch的服务器工作日志文档被接收后,如上述步骤402至410所述,亦能够创建于Date索引下,届时Elasticsearch系统中则有一个索引:Date索引,该索引下有分片标识分别为1001、1002、1003、1004的分片。
索引下的分片亦可以进行删除,在一种可选择的方式中,于Elasticsearch系统中,也可设置各路由字段索引下的分片数量的阈值;如,在应用Elasticsearch文档记录服务器工作日志的场景下,于配置文件中,预设Date字段为文档存储所用的路由字段,设置Date索引下的分片数量阈值为7,则能够达到服务器工作日志每周自动更新的效果,每10天、每月更新同理。
本申请所提供的上述基于Elasticsearch的文档存储方法,在文档存储前不需要进行已有分片中数据量的检测和判断,创建分片时不需要重复创建同一路由字段的索引,节约了文档存储所用的时间,提高了文档存储的效率,减少了用户等待时长,提升了用户使用体验。
此外,在本申请方案中,根据实际应用场景所预设的一个路由字段的一个索引下,分列不同字段值对应的分片,所有Elasticsearch已存储文档依照各自路由字段的不同字段值有序分存于各自对应的分片中,优化了文档和分片的分布方式,有利于技术人员进行管理。
与前述基于Elasticsearch的文档存储方法的实施例相对应,本申请还提供了基于Elasticsearch的文档存储装置的实施例。
本申请所提供的Elasticsearch文档的存储装置的实施例,可以应用在任一Elasticsearch系统内的服务器上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在网络设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图5所示,为本申请服务器健康状态的监测装置所在网络设备的一种硬件结构图,除了图5所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的网络设备通常根据其实际功能,还可以包括其他硬件,对此不再赘述。
参见图6,为本申请实施例所提供的一种基于Elasticsearch的文档存储装置的框图,该存储装置包括确定单元610、获取单元620、判断单元630、创建单元640和存储单元650:
其中,确定单元610,用于在接收到待存储文档时,确定所述待存储文档存储所用的路由字段。
获取单元620,用于获取所述待存储文档的所述路由字段的字段值。
判断单元630,用于判断所述字段值对应的分片是否存在。
创建单元640,用于当所述字段值对应的分片不存在时,创建所述字段值对应的分片。
所述存储单元650,用于将所述待存储文档保存在所述字段值对应的分片中。
可选择地,所述判断单元630在判断所述字段值对应的分片是否存在时,具体用于:
判断所述路由字段的索引是否存在;
当所述路由字段的索引不存在时,确定所述字段值对应的分片不存在;
当所述路由字段的索引存在时,将所述字段值与所述路由字段的索引下已有分片的分片标识进行匹配;
若所述字段值与所述已有分片的分片标识匹配成功,则确定所述字段值对应的分片存在;
若所述字段值与所述已有分片的分片标识均匹配失败,则确定所述字段值对应的分片不存在。
可选择地,所述创建单元640在创建所述字段值对应的分片时,具体用于:
当所述路由字段的索引不存在时,创建所述路由字段的索引,并在所述路由字段的索引下,创建所述字段值对应的分片;
当所述路由字段的索引存在,而所述字段值对应的分片不存在时,在所述路由字段的索引下,增建所述字段值对应的分片。
可选择地,所述确定单元610在确定所述待存储文档存储所用的路由字段时,具体用于加载Elasticsearch配置文件,在所述配置文件中查询所述待存储文档存储所用的路由字段。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本说明书中描述的主题及功能操作的实施例可以在以下中实现:数字电子电路、有形体现的计算机软件或固件、包括本说明书中公开的结构及其结构性等同物的计算机硬件、或者它们中的一个或多个的组合。本说明书中描述的主题的实施例可以实现为一个或多个计算机程序,即编码在有形非暂时性程序载体上以被数据处理装置执行或控制数据处理装置的操作的计算机程序指令中的一个或多个模块。可替代地或附加地,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号,该信号被生成以将信息编码并传输到合适的接收机装置以由数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备、或它们中的一个或多个的组合。
本说明书中描述的处理及逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过根据输入数据进行操作并生成输出来执行相应的功能。所述处理及逻辑流程还可以由专用逻辑电路—例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)来执行,并且装置也可以实现为专用逻辑电路。
适合用于执行计算机程序的计算机包括,例如通用和/或专用微处理器,或任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器和/或随机存取存储器接收指令和数据。计算机的基本组件包括用于实施或执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘等,或者计算机将可操作地与此大容量存储设备耦接以从其接收数据或向其传送数据,抑或两种情况兼而有之。然而,计算机不是必须具有这样的设备。此外,计算机可以嵌入在另一设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏操纵台、全球定位系统(GPS)接收机、或例如通用串行总线(USB)闪存驱动器的便携式存储设备,仅举几例。
适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、媒介和存储器设备,例如包括半导体存储器设备(例如EPROM、EEPROM和闪存设备)、磁盘(例如内部硬盘或可移动盘)、磁光盘以及CD ROM和DVD-ROM盘。处理器和存储器可由专用逻辑电路补充或并入专用逻辑电路中。
虽然本说明书包含许多具体实施细节,但是这些不应被解释为限制任何发明的范围或所要求保护的范围,而是主要用于描述特定发明的具体实施例的特征。本说明书内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如上所述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序执行或顺次执行、或者要求所有例示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中均需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中,或者封装成多个软件产品。
由此,主题的特定实施例已被描述。其他实施例在所附权利要求书的范围以内。在某些情况下,权利要求书中记载的动作可以以不同的顺序执行并且仍实现期望的结果。此外,附图中描绘的处理并非必需所示的特定顺序或顺次顺序,以实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (10)
1.一种基于Elasticsearch的文档存储方法,其特征在于,所述方法包括:
在接收到待存储文档时,确定所述待存储文档存储所用的路由字段;
获取所述待存储文档的所述路由字段的字段值;
判断所述字段值对应的分片是否存在;
当所述字段值对应的分片不存在时,创建所述字段值对应的分片;
将所述待存储文档保存在所述字段值对应的分片中。
2.根据权利要求1所述的方法,其特征在于,所述判断所述字段值对应的分片是否存在,包括:
判断所述路由字段的索引是否存在;
当所述路由字段的索引不存在时,确定所述字段值对应的分片不存在;
当所述路由字段的索引存在时,将所述字段值与所述路由字段的索引下已有分片的分片标识进行匹配;
若所述字段值与所述已有分片的分片标识匹配成功,则确定所述字段值对应的分片存在;
若所述字段值与所述已有分片的分片标识均匹配失败,则确定所述字段值对应的分片不存在。
3.根据权利要求2所述的方法,其特征在于,所述创建所述字段值对应的分片,包括:
当所述路由字段的索引不存在时,创建所述路由字段的索引,并在所述路由字段的索引下,创建所述字段值对应的分片;
当所述路由字段的索引存在,而所述字段值对应的分片不存在时,在所述路由字段的索引下,增建所述字段值对应的分片。
4.根据权利要求1所述的方法,其特征在于,所述确定所述待存储文档存储所用的路由字段,包括:
加载Elasticsearch配置文件,在所述配置文件中查询所述待存储文档存储所用的路由字段。
5.根据权利要求4所述的方法,其特征在于,所述在所述配置文件中查询所述待存储文档存储所用的路由字段,包括:
当所述Elasticsearch配置文件中保存的路由字段的数量为1时,确定所述待存储文档存储所用的路由字段为所述配置文件中所保存的这一路由字段;
当所述Elasticsearch配置文件中保存的路由字段的数量大于1时,获取所述待存储文档的业务标识,在所述配置文件中查找所述业务标识对应的路由字段,作为所述待存储文档存储所用的路由字段。
6.根据权利要求1所述的方法,其特征在于,所述待存储文档存储所用的路由字段包括时间戳字段、类型字段和关键词字段。
7.一种基于Elasticsearch的文档存储装置,其特征在于,所述装置包括确定单元、获取单元、判断单元、创建单元和存储单元:
所述确定单元,用于在接收到待存储文档时,确定所述待存储文档存储所用的路由字段;
所述获取单元,获取所述待存储文档的所述路由字段的字段值;
所述判断单元,判断所述字段值对应的分片是否存在;
所述创建单元,当所述字段值对应的分片不存在时,创建所述字段值对应的分片;
所述存储单元,将所述待存储文档保存在所述字段值对应的分片中。
8.根据权利要求7所述的装置,其特征在于,所述判断单元在判断所述字段值对应的分片是否存在时,具体用于:
判断所述路由字段的索引是否存在;
当所述路由字段的索引不存在时,确定所述字段值对应的分片不存在;
当所述路由字段的索引存在时,将所述字段值与所述路由字段的索引下已有分片的分片标识进行匹配;
若所述字段值与所述已有分片的分片标识匹配成功,则确定所述字段值对应的分片存在;
若所述字段值与所述已有分片的分片标识均匹配失败,则确定所述字段值对应的分片不存在。
9.根据权利要求8所述的装置,其特征在于,所述创建单元在创建所述字段值对应的分片时,具体用于:
当所述路由字段的索引不存在时,创建所述路由字段的索引,并在所述路由字段的索引下,创建所述字段值对应的分片;
当所述路由字段的索引存在,而所述字段值对应的分片不存在时,在所述路由字段的索引下,增建所述字段值对应的分片。
10.根据权利要求7所述的装置,其特征在于,所述确定单元在确定所述待存储文档存储所用的路由字段时,具体用于加载Elasticsearch配置文件,在所述配置文件中查询所述待存储文档存储所用的路由字段。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011496160.1A CN112612865A (zh) | 2020-12-17 | 2020-12-17 | 一种基于Elasticsearch的文档存储方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011496160.1A CN112612865A (zh) | 2020-12-17 | 2020-12-17 | 一种基于Elasticsearch的文档存储方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112612865A true CN112612865A (zh) | 2021-04-06 |
Family
ID=75240972
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011496160.1A Pending CN112612865A (zh) | 2020-12-17 | 2020-12-17 | 一种基于Elasticsearch的文档存储方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112612865A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116401259A (zh) * | 2023-06-08 | 2023-07-07 | 北京江融信科技有限公司 | 一种用于ElasticSearch数据库的自动化预创建索引方法和系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120179684A1 (en) * | 2011-01-12 | 2012-07-12 | International Business Machines Corporation | Semantically aggregated index in an indexer-agnostic index building system |
CN106919675A (zh) * | 2017-02-24 | 2017-07-04 | 浙江大华技术股份有限公司 | 一种数据存储方法及装置 |
CN108197296A (zh) * | 2018-01-23 | 2018-06-22 | 马上消费金融股份有限公司 | 基于Elasticsearch索引的数据存储方法 |
CN110019211A (zh) * | 2017-11-27 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 关联索引的方法、装置和系统 |
CN110196851A (zh) * | 2019-05-09 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 一种数据存储方法、装置、设备及存储介质 |
CN110427368A (zh) * | 2019-07-12 | 2019-11-08 | 深圳绿米联创科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN111797096A (zh) * | 2020-06-29 | 2020-10-20 | 中国平安财产保险股份有限公司 | 基于ElasticSearch的数据索引方法、装置、计算机设备及存储介质 |
-
2020
- 2020-12-17 CN CN202011496160.1A patent/CN112612865A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120179684A1 (en) * | 2011-01-12 | 2012-07-12 | International Business Machines Corporation | Semantically aggregated index in an indexer-agnostic index building system |
CN106919675A (zh) * | 2017-02-24 | 2017-07-04 | 浙江大华技术股份有限公司 | 一种数据存储方法及装置 |
CN110019211A (zh) * | 2017-11-27 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 关联索引的方法、装置和系统 |
CN108197296A (zh) * | 2018-01-23 | 2018-06-22 | 马上消费金融股份有限公司 | 基于Elasticsearch索引的数据存储方法 |
CN110196851A (zh) * | 2019-05-09 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 一种数据存储方法、装置、设备及存储介质 |
CN110427368A (zh) * | 2019-07-12 | 2019-11-08 | 深圳绿米联创科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN111797096A (zh) * | 2020-06-29 | 2020-10-20 | 中国平安财产保险股份有限公司 | 基于ElasticSearch的数据索引方法、装置、计算机设备及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116401259A (zh) * | 2023-06-08 | 2023-07-07 | 北京江融信科技有限公司 | 一种用于ElasticSearch数据库的自动化预创建索引方法和系统 |
CN116401259B (zh) * | 2023-06-08 | 2023-08-22 | 北京江融信科技有限公司 | 一种用于ElasticSearch数据库的自动化预创建索引方法和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106657213B (zh) | 文件传输方法和装置 | |
CN108959370B (zh) | 一种基于知识图谱中实体相似度的社区发现方法及装置 | |
CN108572789B (zh) | 磁盘存储方法和装置、消息推送方法和装置及电子设备 | |
CN108228799B (zh) | 对象索引信息的存储方法及装置 | |
US20190332701A1 (en) | System and Method for Efficiently Updating a Secondary Index Associated with a Log-Structured Merge-Tree Database | |
US20230205755A1 (en) | Methods and systems for improved search for data loss prevention | |
CN110647502A (zh) | 一种文件加载方法、设备、装置和计算机存储介质 | |
US7966358B2 (en) | Determining an approximate number of instances of an item for an organization | |
WO2017020735A1 (zh) | 一种数据处理方法、备份服务器及存储系统 | |
CN110909266B (zh) | 深度分页的方法、装置及服务器 | |
US9213759B2 (en) | System, apparatus, and method for executing a query including boolean and conditional expressions | |
CN108399175B (zh) | 一种数据存储、查询方法及其装置 | |
CN108920601B (zh) | 一种数据匹配方法及装置 | |
CN112612865A (zh) | 一种基于Elasticsearch的文档存储方法和装置 | |
US12013861B2 (en) | Method and apparatus for retrieving and enumerating object metadata in distributed storage system | |
US8788500B2 (en) | Electronic mail duplicate detection | |
CN110968267B (zh) | 数据管理方法、装置、服务器及系统 | |
CN114648010A (zh) | 数据表标准化方法、装置、设备及计算机存储介质 | |
CN111371818B (zh) | 一种数据请求的验证方法、装置及设备 | |
US9690789B2 (en) | Archive systems and methods | |
CN116662603B (zh) | 基于kafka的时间轴管控方法、系统、电子设备及存储介质 | |
US11494093B2 (en) | Method and apparatus for processing data of in-memory database | |
CN112364007B (zh) | 基于数据库的海量数据交换方法、装置、设备和存储介质 | |
CN103810209B (zh) | 一种保存数据的方法及系统 | |
CN113961576A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210406 |
|
RJ01 | Rejection of invention patent application after publication |