【ElasticSearch】学习笔记

一、lucene的组成

segment是一个具备完整搜索功能的最小单元。

多个segment组成了一个单机文本检索库lucene。

  • **inverted index:**倒排索引,用于快速根据关键词找到对应的文章
  • term index: 构建出关键词的目录树,解决了term dictionary数据量过大,无法加入到内存的问题,通过term index加载到内存中,提高了查询效率
  • Stored Fields:将数据内容持久化到磁盘中。
  • **​Doc Values:**基于某种数据(时间、价格)提前排序,用于快速排序查找和聚合。

二、ElasticSearch

1、高性能

  • 一个index name对应一个lucene避免过多的资源争抢
  • 单个index name拆分为shard分片,每个shard分片作为一个独立的Lucene库

2、高扩展

  • 将分片部署在多个机器上,缓解单机压力

3、高可用

  • 存在副本分片,主副封片读写分离,若主分片宕机,副本自动晋升为主分片。
  • node角色分化,各司其职(处理用户请求、处理数据、处理节点管理)。
  • 每个节点存在raft模块,同步各个结点的信息数据,所以node看到的集群状态一致。

三、ElasticSearch的写流程

  1. 用户发送请求到协调节点,协调节点根据哈希路由找到请求对应的node中的分片
  2. 写入到对应分片的lucene库里的segment类的inverted index、term index、sorted field、doc value里面
  3. 主分片将数据同步到副本
  4. 副本携入完成相应主节点发送Ack确认到协调节点,写入操作完成

四、ElasticSearch的读流程

1、Query阶段

  1. 用户发送请求到协调节点,协调节点根据index name查询到分片信息将请求转发到数据节点的
  2. 分片上的lucene并发搜索多个segment
  3. 返回找到的文档ID和聚合结果
  4. 返回查询结果

2、Fetch阶段

  1. 用户使用拿到的文档ID再次请求拿去数据
  2. 协调节点分发到对应Node的Shard分片,读取segment中的sorted fields
  3. 返回文档原始信息到用户
相关推荐
小呀小萝卜儿25 分钟前
2025-03-13 学习记录--C/C++-PTA 练习2-9 整数四则运算
c语言·学习
小呀小萝卜儿26 分钟前
2025-03-15 学习记录--C/C++-PTA 练习3-4 统计字符
c语言·学习
MC何失眠2 小时前
vulnhub靶场之stapler靶机
网络·学习·安全·web安全·网络安全
修修修也6 小时前
算法手记3
数据结构·学习·算法·刷题
JM丫7 小时前
python基础
笔记·python
gaorenyusi9 小时前
PentestGPT 下载
学习·web安全
小王努力学编程9 小时前
元音辅音字符串计数leetcode3305,3306
开发语言·c++·学习·算法·leetcode
啥都想学的又啥都不会的研究生10 小时前
Redis设计与实现-数据持久化
java·数据库·redis·笔记·缓存·面试
hxung10 小时前
Linux 命令学习记录
linux·运维·学习