ES 的存储原理

本文详细介绍了Elasticsearch的核心概念、基本结构、数据读写流程、文件存储结构及容灾能力。重点阐述了文档如何通过主分片和副本分片进行存储和检索,以及数据在内存、页缓存、事务日志和磁盘间的流动。此外,讨论了删除和更新操作以及段合并的过程,揭示了Elasticsearch如何实现近实时搜索和高可用性。
摘要由CSDN通过智能技术生成

目录

一、ES是什么

二、ES基本结构

2.1、结构图

2.2、基本概念

2.3、与关系数据库概念的类比

2.4、数据如何读写

2.5 容灾能力

三、ES的文件存储结构

每个分片的事务日志(Transaction Log)

Index文件夹内文件含义(lucene文件夹)

四、存储步骤

页缓存 (文件系统缓存)

​编辑

整体存储步骤流程图

4.1、写入缓存(内存)

4.2、refresh 刷入页缓存(文件系统缓存)

4.3、刷入 refresh 页缓存的同时,写入 translog

4.4、数据 flush 落盘 disk 

4.5、Translog的页缓存(内存缓存)

4.6 flush

 4.7 整体存储步骤讲解

五、Es的其他操作

5.1、Doc删除

5.2、Doc更新 = 删除 + 新增

5.3、段合并

参考文章


一、ES是什么

  • 一个分布式的实时文档存储,每个字段可以被索引与搜索

  • 一个分布式实时分析搜索引擎

  • 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据

  • 基于Lucene,隐藏复杂性,提供简单易用的Restful API接口、Java API接口(还有其他语言的API接口)。ES是一个可高度扩展的全文搜索和分析引擎。它能够快速地、近乎实时地存储、查询和分析大量数据。

二、ES基本结构

2.1、结构图

简单讲解:

  1. Node相当于服务器,上图就是4个服务器,也叫4个数据节点
  2. 比如我的商品数据表的index是 es_product ,我可以把数据切割成3份,那么每一份就是一个 Shared(类似于Mysql的table分表),比如上图的index1,有3个主Shared
  3. 假如我想把不同业务的数据分开存,比如我有外卖的数据,有商超的数据,那么加前缀,waimai_es_product,shangcha_es_product(类似于Mysql的分库)
  4. R-shared就是副本shared,只负责复制Primary给下来的数据,只有当primary挂了,他才上位。(保证系统稳定性,为什么P-s1和 R-s1不能放在一起,那放一起一起挂了不就完犊子了)

2.2、基本概念

  • 集群(cluster)

    ES集群由若干节点组成,这些节点在同一个网络内,cluster-name相同

  • 节点(node)

    一个ES的实例,本质上是一个java进程,生产环境一般建议一台机器上运行一个ES实例。节点可以分布在不同的机房。

  • 节点有如下分类:

    1、master节点:集群中的一个节点会被选为master节点,它将负责管理集群范畴的变更,例如创建或删除索引,添加节点到集群或从集群删除节点。master节点无需参与文档层面的变更和搜索,这意味着仅有一个master节点并不会因流量增长而成为瓶颈。任意一个节点都可以成为 master 节点。

    2、data节点:持有数据和倒排索引。默认情况下,每个节点都可以通过设定配置文件中的node.data属性为true(默认)成为数据节点。如果需要一个专门的主节点,应将其node.data属性设置为false。
    3、client节点:如果将node.master属性和node.data属性都设置为false,那么该节点就是一个客户端节点,扮演一个负载均衡的角色,将到来的请求路由到集群中的各个节点。也叫协调节点,这个节点不需要配置的,只要任何一个节点接收到请求,并且请求不需要这个节点处理,只需要他进行转发的场景下,这个节点就被叫做协调节点。

  • 上面俩节点通过配置指定:
  • node.master: true/false 
    node.data: true/false

    一个节点可以既为Master节点,又为Data节点,但是为什么不推荐? 
    因为Data节点请求过多,负载过高的时候,可能会导致es假死,也就是可能导致其他节点认为该 Master挂了,另外 Data节点会进行gc 回收,这个过程也可能影响 Master节点的正常响应。所以强烈建议 Master 只做集群管理工作,不参与data的index与query

  • 索引(index)

    文档的容器,一类文档的集合

  • 分片(shard)

    单个节点由于物理机硬件限制,存储的文档是有限的,如果一个索引包含海量文档,则不能在单个节点存储。ES提供分片机制,同一个索引可以存储在不同分片(数据容器)中,这些分片又可以存储在集群中不同节点上。

    分片分为主分片(primary shard) 以及从分片(replica shard) 

    1、主分片与从分片关系:从分片只是主分片的一个副本,它用于提供数据的冗余副本 

    2、从分片应用:在硬件故障时提供数据保护,同时服务于搜索和检索这种只读请求 

    3、是否可变:索引中的主分片的数量在索引创建后就固定下来了,但是从分片的数量可以随时改变 

  • 文档(document)

    可搜索的最小单元 ,json格式保存

2.3、与关系数据库概念的类比

RDBMS

ES

Table

Index

Row

Document

Column

Field

Schema

Mapping

SQL

DSL

分片(Shard)在数据库概念映射里面类似于分表(水平拆分)

index、type的初衷

之前es将index、type类比于关系型数据库(例如mysql)中database、table,这么考虑的目的是“方便管理数据之间的关系”。

【本来为了方便管理数据之间的关系,类比database-table 设计了index-type模型】

为什么现在要移除type?

a. 在关系型数据库中table是独立的(独立存储),但es中同一个index中不同type是存储在同一个索引中的(lucene的索引文件),因此不同type中相同名字的字段的定义(mapping)必须一致。如果是mysql,两个table中的age字段,2个table可以分别定义成int和string,但是es不行,必须一样

b. 不同类型的“记录”存储在同一个index中,会影响lucene的压缩性能。

2.4、数据如何读写

1、所有数据的处理都由 Primary Shared去处理

shard = hash(routing) % number_of_primary_shards

2、假如客户端请求 Node2 写入数据,比如是往spu-record这个index写入数据,此时根据路由字段(一

最低0.47元/天 解锁文章
ES为什么那么牛——Elasticsearch存储解析
魏小言的博客
05-23 2804
文章目录ElasticsearchElasticsearch 架构文档型数据库索引结构时间复杂度空间复杂度Q&A附录 本文仅针对ES存储部分进行解析,其他部分请关注后续博文,欢迎技术交流! Elasticsearch 监控全家桶 ELK/EFK,其中的 E 就是 ES(Elasticsearch)。Elasticsearch「开发语言 Java」最早于 2010 年 2 月发布,是一款分布式可扩展的实时检索分析组件。它不仅是一款文档型数据库,也是基于全文搜索引擎 Apache Lucene 之上的一
ES技术原理
05-10
华为教程,内容由浅入深,适合各个层次学习,欢迎大家讨论
Elasticsearch之储存原理和优化
最新发布
weixin_45653328的博客111
08-30 1332
新的数据会继续的被写入内存,但内存中的数据并不是以段的形式存储的,因此不能提供检索功能。虽然通过延时写的策略可以减少数据往磁盘上写的次数并提升了整体的写入能力,但是我们知道文件缓存系统也是内存空间,属于操作系统的内存,只要是内存都存在断电或异常情况下丢失数据的危险。的内存中执行的,数据被分配到特定的分片和副本上之后,最终是存储到磁盘上的,这样在断电的时候就不会丢失数据。被删除的文档不会被拷贝到新的大段中。到磁盘,同时写入一个包含新段且排除旧的和较小的段的新提交点,新的段被打开可以用来搜索。
ES数据存储与查询基本原理
Steve Wang's blog
05-02 3262
ES简介、ES核心概念、ES读写原理
ES索引存储原理
热门推荐
guoyuguang0的专栏
08-06 3万+
ES索引存储原理不变性写到磁盘的倒序索引是不变的:自从写到磁盘就再也不变。 这会有很多好处: 不需要添加锁。不存在写操作,因此不存在多线程更改数据。 提高读性能。一旦索引被内核的文件系统做了Cache,绝大多数的读操作会直接从内存而不需要经过磁盘。 提升其他缓存(例如fiter cache)的性能。其他的缓存在该索引的生命周期内保持有效,减少磁盘I/O和计算消耗。 当然,索引
ES--存储原理及读写过程
qq_46893497的博客
01-10 5815
存储原理及读写过程1、ES节点架构2、插入、更新或者删除流程3、查询4、写实现5、删除和更新实现 1、ES节点架构 分布式主从架构 Master Node:主节点 负责所有管理类的操作 所有索引库的创建、删除、修改、分片的分配 维护和 更新整个ES集群的状态 也负责存储数据 Data Node:从节点 负责存储数据,保存分片中的数据,可以横向扩展 Master会将索引库的分片相对均衡的分布在每台机器上 Coordinator Node:中心调度节点 谁接受客户端的读写请求,这台节点就作为中心
文档存储Elasticsearch系列--2 ES内部原理
拽着尾巴的鱼儿的博客
02-03 2080
文档存储Elasticsearch系列--2 ES内部原理
Elasticsearch 原理(六):深入了解Elasticsearch存储
桃花惜春风
09-05 9182
本文我们深入了解关于Elasticsearch存储,如我们写入Elasticsearch的数据是如何在节点上存储的。 Elasticsearch的路径 Elasticsearch主要有以下路径: path.home:运行Elasticsearch进程的用的的home目录,默认为Java系统属性user.dir path.conf:Elasticsearch的配置文件目录 pat...
Elasticsearch实战与原理解析 源代码.zip
06-06
这份"**Elasticsearch实战与原理解析 源代码**"的压缩包文件提供了关于这个强大工具的实践案例和源代码,旨在帮助用户深入理解和掌握Elasticsearch的核心功能和工作原理。 首先,我们要了解Elasticsearch的基本概念...
ElasticSearch工作原理.pptx
03-16
本文章以PPT的形式,详细展示了elastic search的工作原理存储、及注意事项,如shard分片原理及设计、相关插件、与solr比较
08、es 进一步了解___d_机制原理_存储原理
01-07
具体的存储路径可在配置文件 …/config/elasticsearch.yml 中进行设置,默认存储在安装目录的 Data 文件夹下。 建议不要使用默认值,因为若 ES 进行了升级,则有可能导致数据全部丢失: path.data: /path/to/data //...
ElasticSearch 学习记录之 分布式文档存储ES中存数据和取数据的原理
weixin_30757793的博客
12-17 600
ElasticSearch 系列文章 1 ES 入门之一 安装ElasticSearcha 2 ES 记录之如何创建一个索引映射 3 ElasticSearch 学习记录之Text keyword 两种基本类型区别 4 ES 入门记录之 match和term查询的区别 5 ElasticSearch 学习记录之ES几种常见的聚合操作 6 ElasticSearch 学习记录之父子结构的...
ES分布式架构及底层原理
weixin_33971130的博客
06-12 1855
es分布式架构原理 elasticsearch设计的理念就是分布式搜索引擎,底层实现还是基于Lucene的,核心思想是在多态机器上启动多个es进程实例,组成一个es集群。一下是es的几个概念: 接近实时es是一个接近实时的搜索平台,这就意味着,从索引一个文档直到文档能够被搜索到有一个轻微的延迟 集群(cluster)一个集群有多个节点(...
整理:ES索引存储原理
zhanghongzheng3213的专栏
05-25 945
ES索引存储原理 不变性 写到磁盘的倒序索引是不变的:自从写到磁盘就再也不变。 这会有很多好处: 不需要添加锁。不存在写操作,因此不存在多线程更改数据。 提高读性能。一旦索引被内核的文件系统做了Cache,绝大多数的读操作会直接从内存而不需要经过磁盘。 提升其他缓存(例如fiter cache)的性能。其他的缓存在该索引的生命周期内保持有效,减少磁盘I/O和计算消耗。 当然,索引的不变性也有缺点。如果你想让新修改过的文档可以被搜索到,你必须重新构建整个索引。这在一个index可以容纳的数据量
es存储过程
weixin_41175789的博客
11-11 1156
es结构 es的一个index包含多个shared分片 每个分片包含多个segment 每个segment包含一个倒排序列表 倒排序列表结构 分词 文档id hello 2 es存储文档过程 当客户端saveIndex()之后,数据首先被放到Java的内存,然后过1s后会执行refresh操作,把内存的数据创建segment,并生成translog,segment也是放在缓存中,并提供查询功能,这是数据并没有写入磁盘,所以es会定期执行flush操作,将缓存中的segment利用tr
ES: 架构及原理
Leo专题
02-08 3万+
Elasticsearch 是一个兼有搜索引擎和NoSQL数据库功能的开源系统,基于Java/Lucene构建,可以用于全文搜索,结构化搜索以及近实时分析。可以说Lucene是当今最先进,最高效的全功能开源搜索引擎框架。 说明: Lucene:只是一个框架,要充分利用它的功能,需要使用JAVA,并且在程序中集成Lucene,学习成本高,Lucene确实非常复杂。 Elasticsearch
ElasticSearch集群原理与配置详解
"这篇文档详细分析了Elasticsearch的核心原理,特别是其集群的构建和运作机制。集群在Elasticsearch中扮演着至关重要的角色,它是一个P2P系统,使用gossip协议进行节点间的通信。在2.0版本之前,集群的节点自动发现...
写文章

热门文章

  • 主流JSON引擎性能比较(GSON,FASTJSON,JACKSON,JSONSMART) 9735
  • 排序算法的空间复杂度和时间复杂度 9149
  • ES 的存储原理 8814
  • 解决Mongo插入时候 Invalid BSON field 问题。 7566
  • 【IntelliJ IDEA】配置 Run 运行时参数 6678

分类专栏

  • elasticsearch 1篇
  • 线程 21篇
  • eslastish
  • memcache
  • IO 1篇
  • Kafka 7篇
  • 基础 4篇
  • java 11篇
  • mq
  • Collection 7篇
  • mysql 1篇
  • MongoDB 1篇
  • 工具类 1篇
  • 数据结构 1篇
  • 硬件 2篇
  • 引用 6篇
  • idea 2篇
  • git
  • 性能 1篇
  • 算法 1篇
  • redis 1篇

最新评论

  • 【线程】Object.wait 内部原理(二)

    TuJun233: 想问下文章中的图是哪里的呀?感觉挺清晰的

  • 汉明重量(Hamming Weight)以及 redis的bitcout底层

    Java编程乐园: 优质好文,博主的文章非常精炼,兼顾实用性和可操作性。研读后深受教益。我也写了一篇博客,做了更深入的剖析,可以说是站在你的臂膀上,写出来的好文。欢迎前往评论指正。我的博客:【位操作】比特位计数(bit counting)之二【分治法】【2bit分组】右移位法【彻底打通任督二脉】【位运算】 链接:https://blog.csdn.net/weixin_42369079/article/details/138904729?spm=1001.2014.3001.5502【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

  • 排序算法的空间复杂度和时间复杂度

    starlighttt: 快排中getmid函数里有bug,漏了right--和left++

  • 排序算法的空间复杂度和时间复杂度

    JebLin02: 谢谢提醒,重新理解了一下,改了~

  • 排序算法的空间复杂度和时间复杂度

    JebLin02: 谢谢提醒,重新理解了一下,改了~

大家在看

  • STM32 项目资源持续更新中! 448
  • 【网络代理模块】反向代理(下) 604
  • 【MATLAB代码】二维情况下的EKF滤波,非线性状态方程和非线性的观测方程
  • camtasia studio2024注册机keygenexe 268
  • JVM 的内存结构之堆栈

最新文章

  • 系统架构设计面试题
  • LeetCode的几道题
  • 图面试专题
2023年20篇
2022年6篇
2021年2篇
2020年9篇
2019年43篇
2018年1篇

目录

目录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳坪山网站建设公司重庆北碚区网站排名优化推广松江区搜索引擎网站优化定制方案惠州定制网站优化价格信息发布类网站优化方法杭州网站排名优化公司重庆标准网站优化设计网站龙卷风优化深圳网站seo关键词优化方法超越同行网站优化方案漯河网站外包优化网站优化外包哪家强中国网站优化系统代理项目蓟县网站优化哪家效果好宁波专业网站优化黔西网站关键词优化价格网站优化用户体验许昌网站优化推广费用情况专业网站seo推广优化报价南部商务区网站优化推广城区网站优化推广排名品牌免费优化网站排名网站导航优化教程汝南县网站seo优化排名品牌网站优化视频seoer如何优化网站好的优化网站的网站架构页面优化江西个性网站优化排名seo网站优化外包哪家好桃源独立外贸网站优化香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

深圳坪山网站建设公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化