看了下es文档,大概总结了几种缓存,不知道理解对不对。
1.node query cache 同样的请求在node级别进行缓存,包括缓存结果
2.shard request cache shard级别的缓存,主要缓存size=0的请求,缓存hits total,以及aggs等信息
3.fielddatacache node级别缓存,缓存aggs,排序等信息
4.bitset shard级别,位运算,匹配 同样的条件,比如 term , range等,只缓存该shard中满足条件的docId。 es5去除了term cache,同样的term请求,还必须走bitset 然后 feach
同样有个问题,因为还没看代码,猜测比如node级别的缓存,同样的请求缓存了结果,同时也缓存了命中的段列表。 新数据进来,生成新段,缓存结果做merge?
请问我理解对么?
1.node query cache 同样的请求在node级别进行缓存,包括缓存结果
2.shard request cache shard级别的缓存,主要缓存size=0的请求,缓存hits total,以及aggs等信息
3.fielddatacache node级别缓存,缓存aggs,排序等信息
4.bitset shard级别,位运算,匹配 同样的条件,比如 term , range等,只缓存该shard中满足条件的docId。 es5去除了term cache,同样的term请求,还必须走bitset 然后 feach
同样有个问题,因为还没看代码,猜测比如node级别的缓存,同样的请求缓存了结果,同时也缓存了命中的段列表。 新数据进来,生成新段,缓存结果做merge?
请问我理解对么?
1 个回复
kennywu76 - Wood
赞同来自: famoss 、exceptions 、strglee 、chengangxiong 、jiangtao 、zhanglbjames 、bluebird168更多 »
PS. ES随着版本的快速更迭,缓存的机制也在不断改进,以上解释只针对目前5.x版本。