您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

Elasticsearch中数据是如何存储的?

时间:2020-01-30 17:00:28  来源:  作者:

使用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基本概念

  • segment : lucene内部的数据是由一个个segment组成的,写入lucene的数据并不直接落盘,而是先写在内存中,经过了refresh间隔,lucene才将该时间段写入的全部数据refresh成一个segment,segment多了之后会进行merge成更大的segment。lucene查询时会遍历每个segment完成。由于lucene 写入的数据是在内存中完成,所以写入效率非常高。但是也存在丢失数据的风险,所以Elasticsearch基于此现象实现了translog,只有在segment数据落盘后,Elasticsearch才会删除对应的translog。
  • doc : doc表示lucene中的一条记录。
  • field :field表示记录中的字段概念,一个doc由若干个field组成。
  • term :term是lucene中索引的最小单位,某个field对应的内容如果是全文检索类型,会将内容进行分词,分词的结果就是由term组成的。如果是不分词的字段,那么该字段的内容就是一个term。
  • 倒排索引(inverted index): lucene索引的通用叫法,即实现了term到doc list的映射。
Elasticsearch中数据是如何存储的?

 

  • 正排数据:搜索引擎的通用叫法,即原始数据,可以理解为一个doc list。
  • doc values:Elasticsearch中的列式存储的名称,Elasticsearch除了存储原始数据、倒排索引,还存储了一份doc values,用作分析和排序。doc values 的存在是因为倒排索引只对某些操作是高效的。 倒排索引的优势在于查找包含某个项的文档,而对于从另外一个方向的相反操作并不高效,即:确定哪些项是否存在单个文档里,聚合需要这种次级的访问模式。
Elasticsearch中数据是如何存储的?

 

2. lucene文件内容

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

Elasticsearch中数据是如何存储的?

 


Elasticsearch中数据是如何存储的?

 

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

 

 

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

  • 存储原文_source的文件.fdt .fdm .fdx;
  • 存储倒排索引的文件.tim .tip .doc;
  • 用于聚合排序的列存文件.dvd .dvm;
  • 全文检索文件.pos .pay .nvd .nvm等;
  • 加载到内存中的文件有.fdx .tip .dvm;

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



Tags:   点击:()  评论:()
声明:本站部分内容来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除,谢谢。
▌相关评论
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
▌相关推荐
一、HTTP Begin1、什么是 HTTPHTTP 是基于文本传输的协议,它位于 OSI 七层模型的应用层(Application) ,HTTP 是通过客户端向服务器发送请求,服务器响应请求来进行通讯,截止到目前...【详细内容】
2020-11-12     点击:(2)  评论:(0)  加入收藏
平时大家在用PS的时候,速度一直提不上去了该怎么办?那么下面这120个由大神们总结的PS技巧,你务必要学会,能让你的设计更高效!(即使学不会也收藏起来,早晚会用到)这120款技巧覆盖了PS...【详细内容】
2020-11-12     点击:(3)  评论:(0)  加入收藏
基金投资作为低风险偏好者的最爱一样面临投资大逻辑,否则基民也会在不断起起伏伏的行情中迷茫和困惑。虽然我写过很多关于投资理念的文章,不过在信息泛滥的时代,越宽泛和理念的...【详细内容】
2020-11-12     点击:(2)  评论:(0)  加入收藏
概述Go语言作为一门开源的编程语言,以简洁、快速、安全著称。尤其在高性能的分布式服务器领域得到广泛应用。技多不压身,在学习过程中记录下来,以备后续参考,希望对有同样需求的...【详细内容】
2020-11-12     点击:(2)  评论:(0)  加入收藏
我们都知道现在mysql开源数据库是我们现在小型网站使用较多的免费数据库,我们在创建数据表时容易出现表名出现有问题需要修改,今天在这里教大家利用Sql语句来修改表名的方法:本...【详细内容】
2020-11-12     点击:(3)  评论:(0)  加入收藏
作为一个后端开发人员来说,微信开发已经是必备的技能之一了,今天小编就来分享一个相关的类库shenghui0779/gochat(以下简称wechat)。这个类库简单易用,看源码的时候目录结构一...【详细内容】
2020-11-12     点击:(4)  评论:(0)  加入收藏
MGR简介MySQL Group Replication,简称MGR,它是MySQL官方推出的基于paxos分布式一致性协议的状态机复制,实现了分布式下数据的最终一致性。同时MGR提供了高可用、高扩展、高可靠...【详细内容】
2020-11-12     点击:(4)  评论:(0)  加入收藏
服务器意外断电后,RAID控制器宕机如下图所示,使用BMC管理口进iKVM,在服务器启动的过程中可以看到如下提示 解决办法:1、开机过程中按提示按ctrl+R,进RAID管理界面 2、将Boot Mo...【详细内容】
2020-11-12     点击:(3)  评论:(0)  加入收藏
小红书种草推广已经是重要的网络推广方式之一,做小红书推广有最重要的两点。...【详细内容】
2020-11-12     点击:(5)  评论:(0)  加入收藏
IPSec VPN高可用性解决方案需要用到DPD、RRI、路由、SLA等技术组合使用才能做到简单的高可用性,缺点是使用场景单一且配置繁琐。由于IPSec VPN的局限性,思科基于IPSec VPN和动...【详细内容】
2020-11-12     点击:(3)  评论:(0)  加入收藏
民间借贷作为民事案件中最为常见的纠纷之一,其出现的频率相当高、案件类型颇为繁多。为此,笔者特整理了以下最为常见的十种民间借贷案件类型,并分别收集了相关案例以供大家阅...【详细内容】
2020-11-12     点击:(3)  评论:(0)  加入收藏
移动硬盘怎么选?防水、防震、抗冲击,高速读写最重要,这样才能保证数据的安全和快速读写。 闪迪至尊极速移动固态硬盘,1T版,目前价格1199,虽然价格要比普通移动硬盘贵一些,但是品质...【详细内容】
2020-11-12     点击:(2)  评论:(0)  加入收藏
由iPhone带头,越来越多的手机把3.5mm耳机孔去掉了之后。用户们就被半逼迫着购买了无线耳机,或者typec/lighting借口耳机。但是对于用户已经拥有的那些3.5mm耳机怎么办呢?如果你...【详细内容】
2020-11-12     点击:(2)  评论:(0)  加入收藏
近日,我在网上想要买一块硬盘,因为我的电脑硬盘内存太小了,当我打开某宝的时候,我搜索电脑硬盘的时候,我发现电脑硬盘有几种颜色,分别是:黑盘、蓝盘,绿盘、那不同颜色的硬盘要怎么选...【详细内容】
2020-11-12     点击:(3)  评论:(0)  加入收藏
选固态硬盘核心看5点:接口、闪存颗粒(类型和大小)、主控、缓存、价格。 1.电脑接口决定支持的固态硬盘类型,接口不匹配性能再好也白搭; 2.闪存颗粒决定固态硬盘的容量、性能和质...【详细内容】
2020-11-12     点击:(3)  评论:(0)  加入收藏
今天遇到一件奇怪的事情!因为单位升级到WIN10,所以最近一直在重装系统,工作量很大,先是备份资料,重装系统,还原资料,配置计算机名,配置IP,配置邮箱,安装打印机驱动,一大堆的事情,还好这W...【详细内容】
2020-11-12     点击:(3)  评论:(0)  加入收藏
不管是固态硬盘还是机械硬盘,分区都是一样的操作。1、首先按照系统版本(32位或64位,可在此电脑,右键,属性中查看)下载一个分区助手diskgenius,下载完成安装上并打开diskgenius。 2...【详细内容】
2020-11-12     点击:(3)  评论:(0)  加入收藏
随着电商平台的兴起,很多小伙伴在购买电脑时,都会选择网上选购配件,买好后开始自己组装,却发现开不了机、没声音、USB不能用等问题,其实这是因为你电脑跳线没接对或者没有接。跳...【详细内容】
2020-11-12     点击:(3)  评论:(0)  加入收藏
今天给大家说说电脑文件夹的那些事。我们电脑一般需要根据硬盘的数量分成几个盘,点击这里可以了解硬盘分区,而系统一般是放在 C 盘的,所以今天也主要说说 C 盘的文件夹中哪些东...【详细内容】
2020-11-12     点击:(2)  评论:(0)  加入收藏
智能手机系统,就存在着这样一个问题:随着使用越久,残存的垃圾就越多,磁盘的存储空间都会由于删除等操作出现一些碎片。还有一点是安卓手机是电子产品,使用得越久,器件会存在老化的...【详细内容】
2020-11-12     点击:(2)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条