news 2026/4/28 21:13:22

Elasticsearch底层原理:数据存储全流程+管理机制深度剖析,彻底吃透ES存储核心

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Elasticsearch底层原理:数据存储全流程+管理机制深度剖析,彻底吃透ES存储核心

Elasticsearch底层原理:数据存储全流程+管理机制深度剖析,彻底吃透ES存储核心

    • 前言
    • 一、先搞懂:Elasticsearch 存储的底层基石 —— Lucene
      • 1.1 核心结论
      • 1.2 为什么段不可变?
    • 二、Elasticsearch 底层数据结构(必须记住)
      • 2.1 逻辑结构
      • 2.2 物理结构
    • 三、Elasticsearch 数据写入底层完整流程(超级详细)
      • 3.1 一句话总结写入流程
      • 3.2 10 步底层写入流程
      • 3.3 底层数据写入流程图
    • 四、近实时搜索(NRT)底层原理
      • 4.1 为什么近实时?
      • 4.2 核心机制
    • 五、数据可靠性:Translog 底层机制
      • 5.1 Translog 是什么?
      • 5.2 工作机制
      • 5.3 为什么 ES 写入不会丢数据?
    • 六、数据删除 & 更新底层原理(面试必考)
      • 6.1 核心结论
      • 6.2 删除流程
      • 6.3 更新流程
      • 6.4 删除/更新底层流程图
    • 七、段合并(Segment Merge)底层机制
      • 7.1 为什么要合并?
      • 7.2 合并做什么?
      • 7.3 特点
    • 八、Elasticsearch 磁盘文件结构(看懂就是高手)
    • 九、总结:ES 底层存储 10 条核心真理(背会)
    • 十、本文总结

🌺The Begin🌺点点关注,收藏不迷路🌺

前言

很多开发者天天用 Elasticsearch 做搜索、日志、聚合,但90% 的人都不清楚 ES 底层到底是怎么存数据的
不知道 Segment、段不可变、倒排索引、刷盘机制、事务日志、段合并,就永远无法真正做好 ES 性能优化、故障排查、集群调优。

本文带你从 0 深入 ES 底层存储,用最通俗的语言 + 流程图 + 核心机制,完整讲解:
ES 数据写入流程 → 磁盘存储结构 → 索引管理 → 数据删除/更新 → 段合并机制
吃透这篇文章,你对 ES 的理解会直接从“使用级”升到“架构级”。


一、先搞懂:Elasticsearch 存储的底层基石 —— Lucene

ES 自己不实现存储,它的存储底层是Apache Lucene

1.1 核心结论

  • ES = 分布式 Lucene
  • Lucene = 最强大的搜索引擎库
  • Lucene 索引 = Segment(段) + 倒排索引
  • Segment(段)= 只读不可变(ES 所有存储机制都围绕这一点设计)

1.2 为什么段不可变?

  • 极高并发读写安全
  • 无需锁机制
  • 利于缓存
  • 利于压缩
  • 检索速度极快

代价:不能直接修改/删除,只能新增、标记删除。


二、Elasticsearch 底层数据结构(必须记住)

2.1 逻辑结构

集群(Cluster) ↓ 索引(Index) ↓ 主分片 + 副本分片(Shard) ↓ 每个分片 = 一个独立的 Lucene 索引 ↓ Lucene 索引 = N 个 Segment(段) + 1 个 Translog(事务日志)

2.2 物理结构

  • Segment(段):真正的数据文件(倒排索引)
  • .del 文件:删除标记文件
  • Translog:写入防丢失日志
  • Commit Point:段清单文件

三、Elasticsearch 数据写入底层完整流程(超级详细)

3.1 一句话总结写入流程

先写内存 → 定时刷成段 → 异步落盘 → 日志保证安全 → 后台合并段

3.2 10 步底层写入流程

  1. 客户端发送写入请求(PUT/POST/Bulk)
  2. 协调节点路由到对应主分片
  3. 数据写入JVM 内存 buffer
  4. 同时写入Translog(磁盘)保证不丢失
  5. 每隔refresh_interval: 1s
    • buffer 生成新 Segment
    • 写入文件系统缓存
    • 文档可被检索
  6. 数据此时不在磁盘,但可搜索(近实时 NRT)
  7. 随着 Segment 越来越多,触发Flush 操作
  8. 所有 Segment写入磁盘
  9. 清空 Translog
  10. 后台段合并(Merge)优化查询性能

3.3 底层数据写入流程图

客户端写入文档

写入JVM内存Buffer

同步写入Translog磁盘日志

定时Refresh: 1s

Buffer生成新Segment段

Segment写入文件系统缓存

文档可检索

多次累积后触发Flush

所有Segment写入磁盘

清空Translog

后台段合并Merge


四、近实时搜索(NRT)底层原理

ES 不是实时数据库,是近实时搜索(Near Real Time)

4.1 为什么近实时?

  • 数据写入内存后不会立即可查
  • 必须等1s refresh生成 Segment 才可以搜索
  • 这就是 ES 写入后延迟 1 秒才能查到的根本原因

4.2 核心机制

  • refresh_interval: 1s(默认)
  • 内存 buffer → Segment → 可检索
  • 不刷盘,只进文件缓存(性能极高)

五、数据可靠性:Translog 底层机制

5.1 Translog 是什么?

预写日志 WAL(Write Ahead Log)
作用:断电不丢数据

5.2 工作机制

  • 写入内存前先写磁盘日志
  • 机器宕机,重启后会从 Translog 恢复数据
  • Flush 后清空日志

5.3 为什么 ES 写入不会丢数据?

因为任何写入都会先落盘 Translog


六、数据删除 & 更新底层原理(面试必考)

6.1 核心结论

段不可变 → 不能直接修改/删除

6.2 删除流程

  1. 不在磁盘删除数据
  2. 只在.del 文件中标记删除
  3. 查询时自动过滤掉标记文档
  4. 段合并时才真正物理删除

6.3 更新流程

更新 = 标记旧文档删除 + 写入新文档

6.4 删除/更新底层流程图

执行删除/更新

在.del文件标记旧文档

新数据写入内存Buffer

Refresh生成新Segment

查询只返回新数据

段合并时物理删除旧数据


七、段合并(Segment Merge)底层机制

7.1 为什么要合并?

  • 每次 refresh 都会生成新段
  • 段太多 → 查询变慢 → 打开文件过多 → 性能暴跌

7.2 合并做什么?

  • 把 N 个小 Segment → 1 个大 Segment
  • 物理删除.del 标记的文档
  • 释放磁盘空间
  • 大幅提升查询速度

7.3 特点

  • 后台异步执行
  • 消耗 IO、CPU
  • 高写入场景必须优化

八、Elasticsearch 磁盘文件结构(看懂就是高手)

数据真正落在磁盘上的文件:

文件名作用
.seg段文件(倒排索引)
.fnm字段信息
.tim倒排词典
.doc文档编号
.pos词项位置
.del删除标记
translog事务日志

这些文件共同组成了 Lucene 索引,也就是 ES 分片。


九、总结:ES 底层存储 10 条核心真理(背会)

  1. ES 底层 =Lucene
  2. 数据存储在Segment(段)
  3. 段只读不可变
  4. 写入先写内存,1秒后可搜索
  5. Translog 保证不丢数据
  6. 近实时搜索 = 1s refresh
  7. 删除=标记删除,不是物理删除
  8. 更新=删旧+写新
  9. 段合并 = 真正删除数据 + 提速
  10. 分片 = 独立 Lucene 索引

十、本文总结

Elasticsearch 底层存储设计非常精妙,用段不可变换取极致检索性能,用异步刷盘换取高吞吐

你真正理解了:

  • 写入流程
  • 段机制
  • Translog
  • 近实时原理
  • 删除/更新原理
  • 段合并

你就彻底掌握了 Elasticsearch 最核心的底层原理。
以后优化写入、优化查询、排查卡顿、解决磁盘膨胀,都会一眼定位根源



🌺The End🌺点点关注,收藏不迷路🌺
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/28 21:12:09

后端写前端实操:Vue 代码一键编译为 React | VuReact 入门教程

VuReact 是一款 Vue 转 React 编译工具,它能将 Vue 3 代码编译为标准、可维护的纯 React 。 🌐 Github:github.com/vureact-js/core 📃 官方文档:https://vureact.top 📢 写在前面 本教程帮助开发者在最短…

作者头像 李华
网站建设 2026/4/28 21:10:33

芯片巨头的路线修正、苹果的折叠屏悖论与游戏交易的代际革命

在这个科技日新月异的周一,我们要深度复盘三则极具话题性的科技大新闻,它们分别来自芯片巨头英特尔、科技界的风向标苹果,以及正在重塑游戏服务市场的懂游宝。这三条新闻不仅揭示了行业巨头在技术路线上的博弈,更深刻反映了在物理…

作者头像 李华
网站建设 2026/4/28 21:06:17

理解程序语言中地语法和语义

在计算机科学中,语法 (Syntax) 和 语义 (Semantics) 是理解编程语言和数据处理的两个核心维度。简单来说,语法关乎“形式”,而语义关乎“意义”。 1. 语法 (Syntax) —— “规则是什么?” 语法是指编程语言中符号组合成有效语句的…

作者头像 李华
网站建设 2026/4/28 21:05:25

Wan2.2-TI2V-5B终极指南:如何在消费级GPU上实现720P高清AI视频生成

Wan2.2-TI2V-5B终极指南:如何在消费级GPU上实现720P高清AI视频生成 【免费下载链接】Wan2.2-TI2V-5B Wan2.2-TI2V-5B是一款开源的先进视频生成模型,基于创新的混合专家架构(MoE)设计,显著提升了视频生成的质量与效率。…

作者头像 李华