es操作数据的原理解析
2021-12-13 10:33:17 0 举报
ElasticSearch操作数据基本原理
作者其他创作
大纲/内容
OS cache
写入数据
translog日志文件
segment file
删除操作流程: 1. commit 的时候会生成一个.del文件,将某个即将被删除的文件标识为deleted状态,如果在搜索的话看到这个标识就知道这个doc被删除了,此时处于一种假删除状态,没有从物理层面删除; 2. buffer每次refresh都会生成一个segment file ,默认一秒一个,防止过多,需要定时定期merge; 3. 在执行merge操作的时候,会将标识为deleted的doc从物理层面删除,然后将新的segment file写入磁盘持久化,这里会重写commit file ,将所有可用的、新的segment标识出来,打开并替换segment以供使用。
内存buffer
将buffer中的数据refresh到cache
translog首先到了cache,5s,将translog持久化到磁盘
数据不断输入给cache,但是translog本身并不会清空,随着数据的不断输入,translog文件不断变大,直至触发commit操作(默认30min) Flush : 1.触发一次refresh,清空buffer,清空translog文件。将数据传给cache; 2.将commit point 写入磁盘文件,里面标识了对应的segment file; 3.强行将cache中的所有数据都( fsync )到磁盘文件中,作为副本的translog此时清空就不担心宕机丢失信息了,最多就是cache中的那5s信息丢失,属于相对较为安全的一种了;一旦宕机,再次重启的时候,就会将日志文件中的数据读取到,恢复到内存buffer和cache中
磁盘
p1 primary
cache到了这一步,数据就可以被查询到了
每隔一秒,refresh将buffer中的数据输入cache,并清空buffer
NRT的含义:near real-time,准实时,因为每隔一秒就会刷新一次数据到cache,或者手动执行refresh也可以,数据基本可以立马查到
收藏
0 条评论
回复 删除
下一页