当前位置: 首页 > news >正文

【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. 返回文档原始信息到用户

相关文章:

  • 零基础上手Python数据分析 (3):Python核心语法快速入门 (下) - 程序流程控制、函数与模块
  • 用ST7789屏幕导致负片(反色)的问题
  • 基于DeepSeek R1的检验检查超声影像综合预约排班和路径最优化研究
  • yolo环境 pytorch环境配置 CUDA安装
  • Google最新生图模型Gemini-2.0-Flash-Exp免费用
  • 大华SDK协议在智联视频超融合平台中的接入方法
  • lws-minimal-ws-server前端分析
  • YOLO11 使用入门
  • Qt常用控件之Layout总篇
  • Python(学习一)
  • Mac 上编译 Ragflow
  • Manus 技术探索 - 使用 gVisor 在沙箱内运行 Ubuntu 容器并通过远程浏览器访问
  • 【A2DP】深入解读A2DP中通用访问配置文件(GAP)的互操作性要求
  • python速通小笔记
  • 关于单一职责原则
  • 星型组网模块的两种交互方式优缺点解析
  • 【国际研讨会】2025年3-5月通信、算法、电气工程、自动化等领域国际学术会议征稿开启!大型学术盛宴!
  • console.log(MyEnum[0])和console.log(MyEnum.A)区别
  • Vue 自定义指令深度解析与应用实践
  • Mac下安装Zed以及Zed对MCP(模型上下文协议)的支持
  • 十四届全国人大常委会第十五次会议在京闭幕
  • 澎湃读报丨解放日报9个版聚焦:上海,加快建成具有全球影响力的科技创新高地
  • 被算法重塑的世界,人与技术如何和谐共处
  • 法院为“外卖骑手”人身权益撑腰:依法认定实际投保人地位
  • 汽车爆炸致俄军中将死亡嫌疑人被羁押,作案全过程披露
  • 张译、惠英红分获第二十届中国电影华表奖优秀男、女演员奖