es 写入、删除数据
2024-03-26 16:50:10 0 举报
es 写入、删除数据
作者其他创作
大纲/内容
merge
primary shard03
primary shard02
每隔一秒 refresh
es进程02
当磁盘文件过多时,系统出发merge操作,将多个segment file 合并成一个大的segment file,如果识别到有.del文件,合并的时候就会将其物理删除掉
默认每隔5秒
primary shard01
写入一条数据
协调节点拿到所有shard返回匹配的doc id,再根据doc id 去各个shard里面查document完整数据,进行筛选那些最匹配的document
数据写入磁盘就建立好了倒排索引
translog日志文件
segment file(磁盘)删除
es是准实时的,es宕机的话会有5s时间的数据可能会丢失;要想不丢的话,就每次手动去掉用他的api每次写入一条数据就写入磁盘
segment file(磁盘)
es进程01
内存buffer
客户端
数组只要被刷入到os cache中数据就能够被客户端搜索到了
commit point(磁盘)
replica shard02
随意挑选一个节点,查询doc【id=1】
replica shard03
translog日志文件随着不断写入会不断变大,到达一定阈值,会触发执行commit操作
客户搜索某条数据时,发现数据在.del中被标识为删除数据,客户端不会将其搜出
协调节点将数据路由到对应的primary shard 上
执行commit操作会把os chache中的数据fsync强刷到segment file 中,并将现有的translog清空,然后重启一个新的;数据没满的清空下es默认是30分钟一次,也可以手动执行这一操作flush
.del文件(磁盘)
同步
不是直接物理删除,而是将删除的数据写入到.del文件
replica shard01
机器01
机器03(协调节点)
translog日志文件(磁盘)
如果primary shard 和replica shard都写完了协调节点会返回成功给客户端
es进程03
fsync强刷
协调节点返回doc[id=1]的document
os cahche
机器02(协调节点)
0 条评论
下一页