ES是一个分布式系统,基于Lucene的全文索引框架.

ES是一个分布式系统,基于Lucene的全文索引框架.

 

ES集群由一个或多个node组成,一个node即为一个ES服务进程.一个index由多个分片(shard)组成,shard分散在各个node上面,每个shard都采用Lucene来创建倒排索引,维护各自的索引数据.

 

  • 插入
  1. ES中每个doc(等同一条记录)都会有唯一id,默认会对id取hash,根据shard的个数mode到对应shard上去.

这里类似MRshuffle操作中的partition操作.

因此,shard中的数据id不是有序的.

  1. ES先将数据写入内存中,然后一段时间后会将内存数据flush到磁盘,磁盘的索引文件会定时进行merge,保证索引文件不会过多而影响检索性能
  2. refresh(1s)

因为inverted index的结构复杂,需要一个专门的indexReader来查询数据,但是indexReader是以snapshot的方式打开的索引,所以需要不断refresh,默认间隔1s.所以说ES是近实时检索.

  • 读取
  1. node接收读的request,然后node会把request分发到含有该index的shard节点
  2. 对应节点进行查询,并计算符合条件的doc,排序后结果汇聚到分发request的node
  3. node将数据返回给client
  • 更新&删除

视作插入,通过timestamp和delete marker区分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值