es准实时运行原理

es准实时运行原理

  • lucene是倒排索引不可变的,但数据是能更新的,动态索引使用跟多的sgement,跟多的索引来完成变更
  • lucene会有多个segment,每个segment会在内存缓存包含新的lucene文档,并不是每一个sgement上来就直接落盘,这个时候在内存缓存当中,
  • 数据进来-> 内存buff -> sgement -> 磁盘 -> refresh之后写到磁盘

  • 3个sgment

  • 新数据进来写入内存buff

  • 内存buff refresh之后生成一个新的sgement

  • 同步更新commit文件第四个sgement写入成功

准实时查询原理

  • 刷磁盘: 100个索引,每1m种刷100次磁盘

  • 保证实时搜索,es提供了轻量级的实现方式,提供了文件系统缓存

  • 内存缓存

  • 文件系统缓存

  • 文件在操作系统缓存可以被搜索
  • lucene允许新的段被写入和打开,在文档未被完整提交时搜索可见 (刷的内存,不是刷的缓存)

  • 刷memory buffer到文件系统缓存时,Trasnlog继续缓存,属于两个独立过程

  • resfresh api

  • 从小的段合并到大的段,减小文件句柄。