自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Elasticsearch中數(shù)據(jù)是如何存儲的?

存儲 存儲軟件
使用Elasticsearch的時候,我們常常需要關(guān)注數(shù)據(jù)存儲在Elasticsearch中的存儲容量。下面,我們來了解一下Elasticsearch中的數(shù)據(jù)是如何存儲。

 使用Elasticsearch的時候,我們常常需要關(guān)注數(shù)據(jù)存儲在Elasticsearch中的存儲容量。下面,我們來了解一下Elasticsearch中的數(shù)據(jù)是如何存儲。

[[319021]]

一、Elasticsearch索引結(jié)構(gòu)

Elasticsearch對外提供的是index的概念,可以類比為MySQL DB,用戶查詢是在index上完成的,每個index由若干個shard組成,以此來達到分布式可擴展的能力。比如下圖是一個由10個shard組成的index。

 

Elasticsearch中數(shù)據(jù)是如何存儲的?

 

shard是Elasticsearch數(shù)據(jù)存儲的最小單位,index的存儲容量為所有shard的存儲容量之和。Elasticsearch集群的存儲容量則為所有index存儲容量之和。

一個shard就對應(yīng)了一個lucene的library。對于一個shard,Elasticsearch增加了translog的功能,類似于HBase WAL,是數(shù)據(jù)寫入過程中的中間數(shù)據(jù),其余的數(shù)據(jù)都在lucene庫中管理的。

所以,Elasticsearch索引使用的存儲內(nèi)容主要取決于lucene中的數(shù)據(jù)存儲。

二、lucene數(shù)據(jù)存儲

下面了解一下lucene的基本概念。

1. lucene基本概念

  • segment : lucene內(nèi)部的數(shù)據(jù)是由一個個segment組成的,寫入lucene的數(shù)據(jù)并不直接落盤,而是先寫在內(nèi)存中,經(jīng)過了refresh間隔,lucene才將該時間段寫入的全部數(shù)據(jù)refresh成一個segment,segment多了之后會進行merge成更大的segment。lucene查詢時會遍歷每個segment完成。由于lucene 寫入的數(shù)據(jù)是在內(nèi)存中完成,所以寫入效率非常高。但是也存在丟失數(shù)據(jù)的風(fēng)險,所以Elasticsearch基于此現(xiàn)象實現(xiàn)了translog,只有在segment數(shù)據(jù)落盤后,Elasticsearch才會刪除對應(yīng)的translog。
  • doc : doc表示lucene中的一條記錄。
  • field :field表示記錄中的字段概念,一個doc由若干個field組成。
  • term :term是lucene中索引的最小單位,某個field對應(yīng)的內(nèi)容如果是全文檢索類型,會將內(nèi)容進行分詞,分詞的結(jié)果就是由term組成的。如果是不分詞的字段,那么該字段的內(nèi)容就是一個term。
  • 倒排索引(inverted index): lucene索引的通用叫法,即實現(xiàn)了term到doc list的映射。

 

Elasticsearch中數(shù)據(jù)是如何存儲的?

 

  • 正排數(shù)據(jù):搜索引擎的通用叫法,即原始數(shù)據(jù),可以理解為一個doc list。
  • doc values:Elasticsearch中的列式存儲的名稱,Elasticsearch除了存儲原始數(shù)據(jù)、倒排索引,還存儲了一份doc values,用作分析和排序。doc values 的存在是因為倒排索引只對某些操作是高效的。 倒排索引的優(yōu)勢在于查找包含某個項的文檔,而對于從另外一個方向的相反操作并不高效,即:確定哪些項是否存在單個文檔里,聚合需要這種次級的訪問模式。

 

Elasticsearch中數(shù)據(jù)是如何存儲的?

 

2. lucene文件內(nèi)容

lucene包的文件是由很多segment文件組成的,segments_xxx文件記錄了lucene包下面的segment文件數(shù)量。每個segment會包含如下的文件。

 

Elasticsearch中數(shù)據(jù)是如何存儲的?

 

 

Elasticsearch中數(shù)據(jù)是如何存儲的?

 

一份數(shù)據(jù)寫入Elasticsearch 會產(chǎn)生多份數(shù)據(jù)用于不同查詢方式,會比原數(shù)據(jù)占用更多磁盤空間。

對照上面的lucene文件表,進行簡要歸納:

  • 存儲原文_source的文件.fdt .fdm .fdx;
  • 存儲倒排索引的文件.tim .tip .doc;
  • 用于聚合排序的列存文件.dvd .dvm;
  • 全文檢索文件.pos .pay .nvd .nvm等;
  • 加載到內(nèi)存中的文件有.fdx .tip .dvm;

其中.tip占用內(nèi)存最大,而.fdt、.tim、.dvd文件占用磁盤最大。

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2024-12-16 17:02:58

MySQLInnoDB數(shù)據(jù)庫

2023-01-12 15:25:51

Curve數(shù)據(jù)存儲

2024-03-01 09:57:19

數(shù)據(jù)庫檢索項目

2017-11-27 08:17:38

存儲數(shù)據(jù)位置

2017-11-01 14:29:38

2019-09-18 11:03:01

數(shù)據(jù)存儲數(shù)據(jù)庫

2018-05-09 10:40:15

云存儲數(shù)據(jù)對象存儲

2022-04-08 08:30:42

大數(shù)據(jù)網(wǎng)絡(luò)

2021-12-21 09:35:59

CSV存儲數(shù)據(jù)Python

2014-02-27 10:08:33

NoSQL

2025-02-19 10:18:29

2013-07-25 14:17:17

2018-05-03 08:53:41

Redis存儲對象

2011-12-28 13:30:39

云計算云存儲

2018-11-02 09:16:05

數(shù)據(jù)存儲磁帶

2021-07-20 09:33:46

數(shù)據(jù)應(yīng)用程序開發(fā)

2012-08-28 09:29:41

虛擬化

2025-02-28 05:50:12

2013-09-10 09:04:41

云計算大數(shù)據(jù)存儲
點贊
收藏

51CTO技術(shù)棧公眾號