Elasticsearch索引内部原理最简洁的归纳

Elasticsearch 内部索引写入原理 :

   1: 索引首先会写入到索引的 buffer缓存和translog日志文件中,这个期间不能被客户端索引;

   2:每隔一秒钟,buffer 缓存中的数据会被写入到新的segment缓存文件 file中,同时写入系统的缓存中os caching 中,并打开索引,外部客户端可以进行索引查询;这一点说明Elasticsearch 并不是所谓的实时索引,其中有一秒的延迟;

    3:写入segment file 后清空buffer缓存数据

    4:重复 1-3步骤的操作,新的segment不断增加,buffer不断清空;而transLog 的中的数据不断追加;

    5:当transLog 长度达到一定程度是时候,或者到达一定时间的时候,发生commit操作 

    6:发生commit操作的时候,所有的segment文件会被fsync强行刷到磁盘上;这个过程就是flush,默认是30分钟flush一次;或者tanslog过大的时候,也会触发flush .

   7:现有的transLog 被清空,创建一个新的transLog ;

步骤可以参考下图:


Elasticsearch 数据恢复原理 :

    在索引写入的过程中,只要segment缓存文件没有刷新到磁盘上,当elasticsearch集群出现宕机后,留住缓存中的数据都会丢失掉;当出现上面数据丢失的现象后,怎么处理呢;Elasticsearch有一套容错恢复规则;当数据出现丢失后,会根据transLog记录点重新生产segment缓存文件。

  每一秒就是刷新Buffer,生成一个segment文件,导致文件过多,默认后台会执行segment merge 操作,在merge的时候,被标记为deleted 的document也会被彻底物理删除 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值