您的位置:首页 > 其它

Making the best use of caches

2016-07-22 00:00 211 查看
Es可以用廉价的硬件资源和毫秒级的速度搜索数亿的文档,其中优秀的缓存机制起了一定的作用。

三个缓存点:1. 过滤器缓存

2. 分片的查询缓存,运行聚合操作在静态索引

3. 操作系统缓存,保证I/O高性能传输

设置查询预处理:index warmers

Filters and filter caches

通过_cache字段控制过滤器缓存:true/false

小贴士:不是所有的过滤器会用_cache控制缓存

过滤器的缓存会被所有的节点共享:当前集群的设置是30%,超过的会采用least recently used (LRU)淘汰。

但是会遇到这样的性能瓶颈,一个查询被缓存了,但是查询一次之后就没有被使用了,而缓存会一直存在直到到达30%的限制之后,就会被释放,这样好吗?肯定是不好的,当查询缓存被使用完了,每一个搜索都会消耗cpu的资源来使旧的缓存被释放从而存放新的缓存条目。

所以为了使得ElasticSearch变得聪明一些,我们设置了缓存失效时间,根据实际需要设置,例如:30分钟。

他们紧凑和易于创建,所以创建缓存的开销过滤器是首次运行时微不足道

重复利用

Bitset之间可以很容易的进行组合,ElasticSearch也可以很容易的得到bitset组合的结果。

过滤器缓存形式有三种:bitset,cache the overall results,field data

Field data 在排序和聚合的时候会使用,term 和range过滤器查询也会使用到。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: