Elasticsearch 架构及 Lucene 索引结构原理入门

文章目录

  • [Elasticsearch 整体架构](#Elasticsearch 整体架构)
  • [Lucene 索引结构](#Lucene 索引结构)
  • [Lucene 倒排索引核心原理](#Lucene 倒排索引核心原理)
  • 倒排索引
  • [倒排表(Posting List)](#倒排表(Posting List))

Elasticsearch 整体架构


一个 ES Index 在集群模式下,有多个Node(节点)组成,每个节点就是ES的 instance(实例)

每个节点上会有多个 shard(分片),P1 P2 是主分片,R1 R2 是副本分片。

每个分片上对应着就是一个 Lucene Index (底层索引文件)

Lucene Index 是一个统称:

由多个 Segment(段文件,就是倒排索引)组成,每个段文件存储着的就是 Doc 文档。

commit point 记录了所有的 segments 的信息

Lucene 索引结构

Lucene 倒排索引核心原理

Lucene 是一个成熟的权威检索库,具有高性能、可伸缩的特点,并且开源、免费。在其基础上开发的分布式搜索引擎便是 Elasticsearch。

Elasticsearch 的搜索原理简单过程是,索引系统通过扫描文章中的每一个词,对其创建索引,指明在文章中出现的次数和位置,当用户查询时,索引系统就会根据事先的索引进行查找,并将查找的结果反馈给用户的检索方式。

倒排索引

倒排索引是整个 ES 的核心,正常的搜索以一本书为例,应该是由 "目录 -> 章节 -> 页码 -> 内容" 这样的查找顺序,这样是正排索引的思想。

倒排索引的思路是通过单词到文档ID的关系对应。

倒排索引包含两个部分:

  • 单词词典(Term Dictionary):记录所有文档的单词,记录单词到倒排列表的关联关系(单词词典一般比较大,通过 B+ 树或哈希拉链法实现,以满足高性能的插入与查询)
  • 倒排表(Posting List):记录了单词对应的文档结合,由倒排索引组成。
    文档ID
    词频 TF - 该单词在文档中分词的位置。用于语句搜索
    位置(Position)- 单词在文档中分词的位置,用于语句搜索
    偏移(Offset)- 记录单词的开始结束位置,实现高亮显示。

倒排表(Posting List)

倒排表记录了对应单词(Term Dictionary)所出现的的文档ID等信息。并且为了搜索的时延肯定需要放在内存中,面对海量的文档必然会存在更多量级的倒排表,为了节约空间,肯定是需要一定的压缩算法。

FOR:(Frame Of Reference)

假设某个包含某个 单词 (Term Dictionary)的文档出现了100W次,那么其对应的倒排表就会非常的大,按1个int占用空间为 4 Byte 计算,仅这么倒排表中的一项就要消耗 3.8MB 空间。

如上图所示,我们知道一个1个int是4字节,一个字节最大可以存正21亿,1个bit可以存2个数,2个bit可以存4个数(0,1,2,3)。那么假设我们存的都是非常小的数字能否将存储所占空间压下来呢。如果我们只取 posting list 中的数字差值,这将是一个非常小的数字,比如上图是100W个1。这样我们通过只取差值,得到了一个100W个1的列表,并将每个元素只耗费1bit存储了下来。这样可以压缩32倍存储空间。

但事实是,一般没有这么理想的状态。

相关推荐
迅翼SwiftWing4 小时前
编队系列(总)|固定翼编队如何实现稳定飞行?通信架构、协同算法与工程约束深度解析
算法·架构
utmhikari4 小时前
【架构艺术】端到端监控告警和预案治理
架构·监控·告警·稳定性·sre·预案
今天AI了吗5 小时前
DeepSeek Harness 深度解析:从评测架构到实战落地
java·网络·数据库·人工智能·架构·java-ee
许彰午5 小时前
27-AuthService登录链路
java·低代码·架构
IT小白杨6 小时前
Facebook广告账户环境隔离实战:从指纹自洽到代理固定的完整工程方案
大数据·经验分享·架构·facebook·指纹浏览器
江畔柳前堤6 小时前
前台·中台·后台:2026年AI原生时代的架构全景图
开发语言·人工智能·算法·机器学习·架构·scala·ai-native
csdn_aspnet6 小时前
ZLibrary类项目合规避坑指南,从版权风控、CDN架构到反爬策略的IT合规实践分享
架构·知识库·电子书·资源·zlibrary
Dawson Zhu7 小时前
知识图谱与 Palantir Ontology:同一套「实体—关系」表象下,两种截然不同的工程范式
人工智能·语言模型·架构·aigc·agi
猎头南楼7 小时前
VLA 模型落地端侧:从架构选型到量化部署的工程实践笔记
笔记·架构·大模型
Quor8 小时前
ZorvAI 架构解析:MCP 连接器如何扩展 Agent 的行动半径
架构