第68讲
数据——>buffer——>index segment——>os cache(commit)——>os disk
在这时候,buffer会被清空,同时web端可以搜索到刚才插入的数据了。
以上是的插入的过程:
如果是删除的时候,每次commit的时候,文件就会标记为.del,再次搜索过来的时候,看到segment中的数据是.del状态,就不会被查询到了。
更新的原理:实际上是将现有的文件标记为.del的形式,然后将新的document文件写入到新的index segment中,下次search过来查询的时候,也许会匹配到segment上的多个版本,但是之前标记的文件就不会被返回了。
第69讲
以上写数据的过程就不是实时的了,肯定是有问题的。。。
其实实际上是讲数据一被写到OS cache中,来不及写往os disk中去,就接受web端search了。
在hive中有fs image是存放metadata的元数据的。
在这个里边落地磁盘的时候也有一个refresh,默认是1s。
在这里落地磁盘的时候,有一个fresh,跟MapReduce是一样的。不同的是:这里可以指定落地磁盘的时间,有两种设定的方式:
①手动设定的方式:post /my_index/_refresh:(这种设定默认的时间是1s)
②机器设定:
put /my_index
{
"setting":{
"refresh_interval":"30s"