<返回更多

Elasticsearch中数据是如何存储的?

2020-01-30    
加入收藏

使用Elasticsearch的时候,我们常常需要关注数据存储在Elasticsearch中的存储容量。下面,我们来了解一下Elasticsearch中的数据是如何存储。

一、Elasticsearch索引结构

Elasticsearch对外提供的是index的概念,可以类比为MySQL DB,用户查询是在index上完成的,每个index由若干个shard组成,以此来达到分布式可扩展的能力。比如下图是一个由10个shard组成的index。

Elasticsearch中数据是如何存储的?

 

shard是Elasticsearch数据存储的最小单位,index的存储容量为所有shard的存储容量之和。Elasticsearch集群的存储容量则为所有index存储容量之和。

一个shard就对应了一个lucene的library。对于一个shard,Elasticsearch增加了translog的功能,类似于HBase WAL,是数据写入过程中的中间数据,其余的数据都在lucene库中管理的。

所以,Elasticsearch索引使用的存储内容主要取决于lucene中的数据存储。

 

 

二、lucene数据存储

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

 

1. lucene基本概念

Elasticsearch中数据是如何存储的?

 

Elasticsearch中数据是如何存储的?

 

2. lucene文件内容

lucene包的文件是由很多segment文件组成的,segments_xxx文件记录了lucene包下面的segment文件数量。每个segment会包含如下的文件。

Elasticsearch中数据是如何存储的?

 


Elasticsearch中数据是如何存储的?

 

一份数据写入Elasticsearch 会产生多份数据用于不同查询方式,会比原数据占用更多磁盘空间。

 

 

对照上面的lucene文件表,进行简要归纳:

其中.tip占用内存最大,而.fdt、.tim、.dvd文件占用磁盘最大。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>