5.ElasticSearch系列之分布式特性及分布式搜索机制(二)

分片内部原理及其生命周期

  • 什么是ES分片
    • ES中最小的工作单元,是一个Lucene的index
  • 一些问题
    • ES搜索是近实时的
    • ES在断电时数据不会丢失
    • 删除文档,不会立刻释放空间
1.1 倒排索引不可变性
  • 倒排索引采用Immutable Design,一旦生成,不可更改
  • 不可变性优点
    • 无需考虑并发写文件的问题,避免了锁机制带来的性能问题
    • 一旦读入内核的文件系统缓存,便留在那里。只要文件系统存有足够的空间,大部分请求就会直接请求内存,不会命中磁盘,提升很大性能
    • 缓存容易生成和维护 / 数据可以被压缩
  • 挑战:如果需要让一个新的文档可以被搜索,需要重建整个索引
1.2 Lucene Index组成

http://shenjianblog.oss-cn-shanghai.aliyuncs.com/pic/20220903/84e0bdc5e400499a8886e53d85b25ab1-ES1.PNG

  • Segment: 即单个倒排索引文件, Segment是自包含,不可变更的。
  • Lucene Index:多个Segment的汇总,也就是ES的Shard
  • 当新文档写入时,会生成新的Segment,查询时会将所有的Segment,并对结果汇总。
  • Commit Point: 记录所有的Segment信息
  • .del: 保存删除的文档信息
1.3 Refresh

http://shenjianblog.oss-cn-shanghai.aliyuncs.com/pic/20220903/a2994aa2ace6459392cb055db04a14e8-ES2.PNG

  • Refresh: 将Index Buffer写入Segment的过程叫做Refresh, Refresh不执行fsync操作
  • Refresh频率:默认1秒发生一次,可通过index.refresh_interval配置。Refresh后,数据就可以被搜索到了。这也是为什么ElasticSearch被称为近实时搜索
  • 如果系统有大量的数据写入,那就会产生很多的Segment
  • Index Buffer被占满时,会触发refresh,默认值是JVM的10%
1.4 Transaction Log
  • Segment写入磁盘过程相对耗时,借助文件系统缓存,Refresh时,先将Segment写入缓存已开放查询
  • 为了保证数据不会丢失。所以在index文档时,同时写Transaction Log,高版本开始,Transaction Log默认落盘。每个分片有一个Transaction Log
  • 在ES Refresh时,Index Buffer被清空,Transaction Log不会清空
1.5 Flush

http://shenjianblog.oss-cn-shanghai.aliyuncs.com/pic/20220903/c7cf6a8059da4691b133523f6327e6c9-ES3.png

ES Flush & Lucene Commit执行过程:

  • 调用Refresh,Index Buffer清空并Refresh
  • 调用fsync, 将缓存中的segments写入磁盘
  • 清空Transaction Log
  • 默认30分钟调用一次 或 Transaction Log满(默认512M)
1.6 Merge
  • Segment很多,需要被定期合并
    • 减少Segments / 删除已经删除的文档
  • ES和Lucene会自动进行merge操作
    • POST my_index/_forcemerge

欢迎关注公众号算法小生沈健的技术博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

算法小生Đ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值