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

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

http://www.kler.cn/a/587177.html

相关文章:

  • 如何让ai问答机器人通人性?
  • Day16:最小的k个数
  • craftjs的示例landing项目改成APP路由
  • 我与DeepSeek读《大型网站技术架构》- 总结
  • 【零基础入门unity游戏开发——unity3D篇】物理系统 —— 3D物理材质Physics Material
  • 解锁下一代AI应用:开源项目mcp-server-qdrant如何重塑向量数据库管理?
  • EasyCVR安防视频汇聚平台助力工业园区构建“感、存、知、用”一体化智能监管体系
  • 异步加载错误如何解决
  • Linux 中 Git 使用指南:从零开始掌握版本控制
  • Flexus应用服务器L实例、X实例以及ECS(弹性计算服务)之间的区别及其适用场景
  • 函数的引用/函数的默认参数/函数的占位参数/函数重载
  • 【C++】:STL详解 —— 布隆过滤器
  • 设计心得——多态
  • 【VUE】day03-vue过滤器、计算属性、vue-cli、vue组件
  • java 中判断对象是否可以被回收和 GCROOT
  • DataWhale学习--大语言模型--模型发展历程
  • go 加载yaml配置文件
  • 成为Python砖家(7): 使用miniforge管理Python版本
  • STM32 HAL库实战:高效整合DMA与ADC开发指南
  • Unity学习日志番外:简易行为树