Elasticsearch请求缓存与查询缓存治理
概览
- 请求缓存(request cache)在分片级缓存整次搜索结果,适用于
size=0 或仅聚合的查询;在索引 refresh 时失效。
- 查询缓存(query cache)在段级缓存过滤器结果(位集),提升重复过滤的效率;受
indices.queries.cache.size 控制。
- 正确设置与观测可提升命中率并避免高成本缓存。
技术参数(已验证)
- 请求缓存:索引设置
index.requests.cache.enabled 控制;适用于聚合与 size=0;写入/刷新使缓存失效。
- 查询缓存:集群设置
indices.queries.cache.size(默认内存百分比);缓存过滤器位集;与段生命周期相关。
- 观测:
_nodes/stats 与 indices stats 查看命中/失效;仪表盘中区分两类缓存效果。
- 治理:避免对高变更索引启用过多请求缓存;对常用过滤使用稳定字段与低基数标签。
- 兼容:在搜索中合理使用预过滤与路由键;减少跨分片与高基数开销。
实战清单
- 为报表与看板聚合启用请求缓存;对常用过滤优化查询缓存。
- 建立命中率与失效观测;在高写入索引上谨慎启用请求缓存。
- 通过字段治理与索引策略提升缓存效果;持续优化。
- Importance: 提升聚合与过滤性能并避免无效缓存消耗。
发表评论 取消回复