美文网首页个人学习
ES原理之写读搜索流程

ES原理之写读搜索流程

作者: 后来丶_a24d | 来源:发表于2020-01-19 17:58 被阅读0次

目录

  • 非读流程
    • 写流程
      • 分布式写入
      • 写入
      • refresh
    • 删除流程
    • 更新
    • 段合并
  • 读流程
  • search流程

todo

非读流程

分布式写入

es写入集群时.jpg

写流程

  • es存储是分段的,每个段具有不可变性,这样就避免多线程安全问题,当然后续会进行段合并以避免段过多。
写入
  1. 新document首先写入内存Buffer缓存中。
  2. 每隔一段时间,执行"commitpoint"(管理多个segment,读取也是找commit point)操作,buffer写入新Segment中。
  3. 新segment写入文件系统缓存 filesystem cache。(实际上第二,第三可以理解为一步,内存 -> 文件缓存 -> 文件。)
  4. 文件系统缓存中的index segment被fsync强制刷到磁盘上,确保物理写入。
    此时,新egment被打开供search操作。
  5. 清空内存buffer,可以接收新的文档写入。


    先被存放到内存.png
refresh
  • Lucene支持对新段写入和打开-可以使文档在没有完全刷入硬盘的状态下就能对搜索可见,而且是一个开销较小的操作,可以频繁进行,refresh操作。
  • 进行refresh操作,清空buffer,文档可被搜索但尚未flush到磁盘。translog不会清空,每隔一段时间(例如translog变得太大),index会被flush到磁盘,新的translog文件被创建,这个commit完整执行结束。


    带translog.png
  • translog可以用来断电恢复啥的

删除流程

  • 删除一个ES文档不会立即从磁盘上移除,它只是被标记成已删除。因为段是不可变的,所以文档既不能从旧的段中移除,旧的段也不能更新以反映文档最新的版本。
    ES的做法是,每一个提交点包括一个.del文件(还包括新段),包含了段上已经被标记为删除状态的文档。所以,当一个文档被做删除操作,实际上只是在.del文件中将该文档标记为删除,依然会在查询时被匹配到,只不过在最终返回结果之前会被从结果中删除。

更新

  • 文档的更新操作和删除是类似的:当一个文档被更新,旧版本的文档被标记为删除,新版本的文档在新的段中索引。
    该文档的不同版本都会匹配一个查询,但是较旧的版本会从结果中删除。

段合并

  • 段合并也会进行哪些需要被删除数据的删除操作,ES通过后台合并段解决这个问题。ES利用段合并的时机来真正从文件系统删除那些version较老或者是被标记为删除的文档。被删除的文档(或者是version较老的)不会再被合并到新的更大的段中。
  • 合并会通过比如时间戳进行分组合并。

读流程


search流程

1、客户端发送请求到一个coordinate node。
2、协调节点将搜索请求转发到所有的shard对应的primary shard 或 replica shard ,都可以。
3、query phase:每个shard将自己的搜索结果(其实就是一些doc id)返回给协调节点,由协调节点进行数据的合并、排序、分页等操作,产出最终结果。
4、fetch phase:接着由协调节点根据doc id去各个节点上拉取实际的document数据,最终返回给客户端。

  1. 进一步,参考本系列es深入篇
  2. 参考https://www.cnblogs.com/bonelee/p/6226185.html

参考

相关文章

  • ES原理之写读搜索流程

    目录 非读流程写流程分布式写入写入refresh删除流程更新段合并 读流程 search流程 todo 宏观看读写...

  • es读优化

    es搜索数据 es搜索数据流程 es读写流程示意图 分布式搜索示意图image.png es的几种搜索类型 QUE...

  • es原理--两篇文章

    infoQ讲解倒排索引 博客园讲解压缩原理,以及es搜索原理

  • Elasticsearch基础概念之查询流程

    ES查询流程 查询流程总体可以分为以下几个部分 请求解析 搜索Query阶段 搜索Fetch阶段 数据排序和合并 ...

  • ES原理之集群启动流程

    目录 启动流程选举主节点选举集群元信息allocation 过程主分片副分片index recovery主分片 r...

  • Elasticsearch笔记(5)

    搜索机制 搜索的流程图如下: 1,文档写入ES的时候,ES中会存储两份数据。一份是文档的原始数据,即_source...

  • ES原理之选主流程

    目录 主从模式vs无主模式 ES选举算法 流程 选主流程 主从模式 VS. 无主模式 分布式系统的集群方式大致可以...

  • ES近实时搜索原理

    Segment(段):Lucene里面的一个数据集概念提交点文件:有一个列表存放着所有已知的所有段ES底层是基于L...

  • ELK技术栈ElasticSearch,Logstash,Kib

    基础部分 工作原理 es增删改内部原理 ELK集群安装部署 文档管理 索引管理 搜索 聚合分析 分词 数据建模 J...

  • ELK技术栈(ElasticSearch,Logstash,Ki

    基础部分 工作原理 es增删改内部原理 ELK集群安装部署 文档管理 索引管理 搜索 聚合分析 分词 数据建模 J...

网友评论

    本文标题:ES原理之写读搜索流程

    本文链接:https://www.haomeiwen.com/subject/bjprzctx.html