elasticsearhc缓存的使用

Elasticsearch 的缓存主要分成三大类

  1. Node Query Cache (Filter Context)
  2. Shard Query Cache (Cache Query的结果)
  3. Fielddata Cahce

在这里插入图片描述

Node Query Cache
每一个节点有要给Node Query 缓存
- 由该节点的所有Shard 共享,只缓存Filter Context 相关内容
区别1
Filter:在查询过程中,Filter只判断该文档是否满足条件,只有YES或者NO。
Query:除了问YES或NO,还会问匹配的程度。
区别2
FIlter就是用来做数据过滤的,ES会对它的结果进行缓存,所以相较于Query而言Filter的速度会更快。

  • Cache采用LRU算法

静态配置,需要设置在每个Data Node 上
Node Level - indices.queries.cache.size: “10%”
index Level: index.queries.cache.enabled:true

Shard Request Cache

  • 缓存每个分片上的查询结果
    只会缓存设置了size = 0 的查询对应的结果,不会缓存hitst。
    但是会缓存Aggregations 和 Suggestions
  • Cahce Key
    LRU 算法,将整个JSON 查询串作为key,与json对象的顺序相关
  • 静态配置
    数据节点: indices.requests.cache.size:“1%”

在这里插入图片描述

在这里插入图片描述

缓存失效
Node Query Cache
保存的是Segment级缓存命中的结果。Segment被合并后,缓存会失效
Shard Request Cache
分片Refresh时候,Shard Request Cache会失效,如果Shard 对应的数据频繁发生比变化,该缓存的失效很差
Fielddata Cache
Segment 被合并后,会失效

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

GET _nodes/stats/indices?pretty

GET _cat/nodes?v&h=name,queryCacheMemory,queryCacheEvictions,requestCacheMemory,requestCacheHitCount,rquest_cache.miss_count

GET _cat/nodes?h=name,port,segments.memory,segments.index_writer_memory,fielddata.memory_size,query_cache.memory_size,request_cache.memory_size&v

GET /_nodes/stats/breaker?

GET /_nodes/stats/breaker?
Tripped 大于0 说明由过熔断
Limit size 与 estimated size 约接近,越可能引发熔断

增加了 indices.breaker.total.use_real_memory 配置项,可以更加精准的分析内存状况,避免OOM
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伟伟哦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值