【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. 返回文档原始信息到用户
相关推荐
Voyager_411 小时前
算法学习记录16——Floyd 判圈算法(环形链表 II)
学习·算法·链表
代码游侠11 小时前
学习笔记——进程控制函数
linux·运维·笔记·学习·算法
冬夜戏雪11 小时前
【学习日记】【12.15】【13/60】
学习
QiZhang | UESTC11 小时前
学习日记day49
学习
石像鬼₧魂石11 小时前
Fail2Ban 一键部署 + 管理脚本(可直接执行)
linux·windows·学习·ubuntu
其美杰布-富贵-李11 小时前
循环神经网络(RNN)深度学习笔记
笔记·rnn·深度学习
资料加载中11 小时前
【AIGC】SCAIL:通过对 3D 一致姿态表示进行上下文学习,实现工作室级角色动画
学习·aigc
石像鬼₧魂石11 小时前
Fail2Ban 实战终极速查表
linux·windows·学习·ubuntu
代码游侠11 小时前
应用--Minishell实现
linux·运维·笔记·学习·算法
zore_c11 小时前
【C语言】Win 32 API——一部分内容详解!!!
c语言·开发语言·c++·经验分享·笔记