原英文版地址: https://www.elastic.co/guide/en/elasticsearch/reference/7.7/query-cache.html, 原文档版权归 www.elastic.co 所有
本地英文版地址: ../en/query-cache.html
本地英文版地址: ../en/query-cache.html
重要: 此版本不会发布额外的bug修复或文档更新。最新信息请参考 当前版本文档。
过滤器上下文中使用的查询结果缓存在节点的查询缓存中,以便快速查找。 每个节点上有一个查询缓存,它被该节点上的所有分片所共享。 缓存使用 LRU 回收策略:当缓存塞满时,最近最少使用的查询结果将被回收,以便为新数据腾出空间。 而我们不能检查查询缓存的内容。
词项(term)查询和在筛选器上下文之外使用的查询不适合缓存。
默认情况下,缓存最多可容纳 10,000 个查询,可以使用的最大内存为总堆空间的 10% 。 为了确定一个查询是否适合缓存,Elasticsearch 维护一个查询历史记录来跟踪发生的事件。
如果一个段包含至少 10,000 个文档,并且该段至少占一个分片的全部文档的3%,则在每个段的基础上进行缓存。 因为缓存是按段进行的,所以段合并会使缓存的查询无效。
以下设置是静态的,必须在集群中的每个数据节点上进行配置:
-
indices.queries.cache.size
-
控制过滤器缓存的内存大小,默认为
10%
。 接受百分比值(如5%
)或精确值(如512mb
)。
以下设置是可以基于每个索引进行配置的index(索引)设置。 只能在索引创建时或在关闭的索引(closed index)上设置:
-
index.queries.cache.enabled
-
控制是否启用查询缓存。接受
true
(默认值) orfalse
。