目录

ElasticSearch学习笔记

【ElasticSearch】学习笔记

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

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

https://i-blog.csdnimg.cn/direct/6de2ab9e99a74cc4b614759252f65151.png

  • inverted index: 倒排索引,用于快速根据关键词找到对应的文章
  • term index: 构建出关键词的目录树,解决了 term dictionary 数据量过大,无法加入到内存的问题,通过term index加载到内存中,提高了查询效率
  • Stored Fields :将数据内容持久化到磁盘中。
  • ​Doc Values: 基于某种数据(时间、价格)提前排序,用于快速排序查找和聚合。
  • 一个index name对应一个lucene避免过多的资源争抢
  • 单个index name拆分为shard分片,每个shard分片作为一个独立的Lucene库
  • 将分片部署在多个机器上,缓解单机压力
  • 存在副本分片,主副封片读写分离,若主分片宕机,副本自动晋升为主分片。
  • node角色分化,各司其职(处理用户请求、处理数据、处理节点管理)。
  • 每个节点存在raft模块,同步各个结点的信息数据,所以node看到的集群状态一致。
  1. 用户发送请求到协调节点,协调节点根据哈希路由找到请求对应的node中的分片
  2. 写入到对应分片的lucene库里的segment类的inverted index、term index、sorted field、doc value里面
  3. 主分片将数据同步到副本
  4. 副本携入完成相应主节点发送Ack确认到协调节点,写入操作完成
  1. 用户发送请求到协调节点,协调节点根据index name查询到分片信息将请求转发到数据节点的
  2. 分片上的lucene并发搜索多个segment
  3. 返回找到的文档ID和聚合结果
  4. 返回查询结果
  1. 用户使用拿到的文档ID再次请求拿去数据
  2. 协调节点分发到对应Node的Shard分片,读取segment中的sorted fields
  3. 返回文档原始信息到用户