Elasticsearch 三种缓存介绍

简介: 转自:http://blog.csdn.net/chennanymy/article/details/52504386?locationNum=3Filter Cache(Query Cache):https://www.elastic.co/guide/en/elasticsearch/reference/1.6/index-modules-cache.htmlQuery Cache也称为Filter Cache,顾名思义它的作用就是对一个查询中包含的过滤器执行结果进行缓存。

转自:http://blog.csdn.net/chennanymy/article/details/52504386?locationNum=3


Filter Cache(Query Cache):

https://www.elastic.co/guide/en/elasticsearch/reference/1.6/index-modules-cache.html

Query Cache也称为Filter Cache,顾名思义它的作用就是对一个查询中包含的过滤器执行结果进行缓存。

比如我们常用的term,terms,range过滤器都会在满足某种条件后被缓存,注意,这里的bool过滤器是不会被缓存的,但bool过滤器包含的子query clause会被缓存,我们可以用下面的命令来查询Query Cache的情况。


Request Cache(Shard query cache)

https://www.elastic.co/guide/en/elasticsearch/reference/1.6/index-modules-shard-query-cache.html

当一个查询发送到ES集群的某个节点上时,这个节点会把该查询扩散到其他节点并在相应分片上执行,我们姑且把在分片上执行的结果叫“本地结果集“,这些本地结果集最终会汇集到最初请求到达的那个协调节点,这些“分片级”的结果集会合并成“全局”结果集返回给调用端。

Request Cache模块就是为了缓存这些“分片级”的本地结果集,但是目前只会缓存查询中参数size=0的请求,所以就不会缓存hits 而是缓存 hits.total,aggregations和suggestions


Fielddata

https://www.elastic.co/guide/en/elasticsearch/reference/1.6/index-modules-fielddata.html

一谈到Fielddata我们不得不提到doc_values,这两者的作用都是一样:能够让我们在inverted index(倒排索引)的基础之上做aggregation、sort或者在查询中通过script访问doc属性,这里我们不讨论doc_values,主要讲下Fielddata,doc values相关知识请戳:http://blog.csdn.net/chennanymy/article/details/52555055

想必大家都知道倒排索引这种结构,如果我们仅仅依靠倒排是很难在查询中做到排序和统计的,因为它并不是像关系型数据库那样采用“列式存储”,而是基于一个“词”到“文档”的倒排。

Fielddata是专门针对分词的字段在query-time(查询期间)的数据结构的缓存。当我们第一次在一个分词的字段上执行聚合、排序或通过脚本访问的时候就会触发该字段Fielddata Cache的加载,这种缓存是“segment”级别的,当有新的segment打开时旧的缓存不会重新加载,而是直接把新的segement对应的Fielddata Cache加载到内存。

加载Fielddata Cache是一个非常昂贵的操作,一旦Fielddata被加载到内存,那么在该Fielddata Cache对应的Segement生命周期范围内都会驻留在内存中。也就是说当段合并时会触发合并后更大段的Fielddata Cache加载。

Fielddata会消耗大部分的JVM堆内存,特别是当加载“高基数”的分词字段时(那些分词后存在大量不同词的字段),针对这种字段的聚合排序其实是非常没有意义的,我们更多的要去考虑是否能用not_analyzed代替(这样就可以使用doc_values实现聚合、排序)。

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
目录
相关文章
|
存储 缓存 监控
Elasticsearch Filter 缓存加速检索的细节,你知道吗?
【8月更文挑战第15天】在大数据与搜索引擎的广阔天地里,Elasticsearch 凭借其强大的全文搜索能力和可扩展性,成为了众多企业和开发者的首选。而在Elasticsearch的性能优化中,Filter缓存(也称为Filter Cache,自Elasticsearch 7.x版本后更名为Query Cache的一部分)扮演着至关重要的角色。今天,我们就来深入探讨一下Elasticsearch Filter缓存如何加速检索过程,以及在日常工作学习中如何有效利用这一特性。
412 0
|
存储 缓存 数据可视化
【Elastic Engineering】Elasticsearch 缓存深度剖析:一次提高一种缓存的查询速度
缓存是加快数据检索速度的王道。因此,如果您有兴趣了解 Elasticsearch 如何利用各种缓存来确保您尽可能快地检索数据,请仔细研读这篇博文,接下来的内容全是干货。本篇博文将阐释 Elasticsearch 的各种缓存功能,这些功能可帮助您在进行初始数据访问后更快地检索数据。Elasticsearch 是使用各种缓存的大户,但在本篇博文中,我们将只着重介绍以下三种:
1481 0
【Elastic Engineering】Elasticsearch 缓存深度剖析:一次提高一种缓存的查询速度
|
缓存 监控 API
Elasticsearch缓存详解
Elasticsearch为了提升查询效率,提供了多种查询缓存,本文会对这些种类的缓存进行分析,包括缓存的使用场景、监控缓存的使用情况等。
949 0
Elasticsearch缓存详解
|
缓存 JSON 监控
Elasticsearch缓存
Elasticsearch为了提升查询效率,提供了多种查询缓存,本文会对这些种类的缓存进行分析,包括缓存的使用场景、监控缓存的使用情况等。
519 0
|
缓存 监控 测试技术
Elasticsearch 缓存深入详解
1、Elasticsearch 缓存引出 Elasticsearch 查询的响应需要占用 CPU、内存资源,在复杂业务场景,会出现慢查询,需要花费大量的时间。 如何破局呢?增加集群硬件配置会有高昂硬件开销。还有没有其他方案呢?这时候会想到:缓存。 Elasticsearch 有哪些缓存,不同缓存的应用场景是什么呢?本文给出答案。
|
缓存 NoSQL 关系型数据库
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
|
8月前
|
缓存 负载均衡 监控
135_负载均衡:Redis缓存 - 提高缓存命中率的配置与最佳实践
在现代大型语言模型(LLM)部署架构中,缓存系统扮演着至关重要的角色。随着LLM应用规模的不断扩大和用户需求的持续增长,如何构建高效、可靠的缓存架构成为系统性能优化的核心挑战。Redis作为业界领先的内存数据库,因其高性能、丰富的数据结构和灵活的配置选项,已成为LLM部署中首选的缓存解决方案。
812 25
|
缓存 NoSQL Java
Redis+Caffeine构建高性能二级缓存
大家好,我是摘星。今天为大家带来的是Redis+Caffeine构建高性能二级缓存,废话不多说直接开始~
1604 0
|
9月前
|
存储 缓存 NoSQL
Redis专题-实战篇二-商户查询缓存
本文介绍了缓存的基本概念、应用场景及实现方式,涵盖Redis缓存设计、缓存更新策略、缓存穿透问题及其解决方案。重点讲解了缓存空对象与布隆过滤器的使用,并通过代码示例演示了商铺查询的缓存优化实践。
365 1
Redis专题-实战篇二-商户查询缓存