原英文版地址: https://www.elastic.co/guide/en/elasticsearch/reference/7.7/query-cache.html, 原文档版权归 www.elastic.co 所有
本地英文版地址: ../en/query-cache.html

节点查询缓存设置

过滤器上下文中使用的查询结果缓存在节点的查询缓存中,以便快速查找。 每个节点上有一个查询缓存,它被该节点上的所有分片所共享。 缓存使用 LRU 回收策略:当缓存塞满时,最近最少使用的查询结果将被回收,以便为新数据腾出空间。 而我们不能检查查询缓存的内容。

词项(term)查询和在筛选器上下文之外使用的查询不适合缓存。

默认情况下,缓存最多可容纳 10,000 个查询,可以使用的最大内存为总堆空间的 10% 。 为了确定一个查询是否适合缓存,Elasticsearch 维护一个查询历史记录来跟踪发生的事件。

如果一个段包含至少 10,000 个文档,并且该段至少占一个分片的全部文档的3%,则在每个段的基础上进行缓存。 因为缓存是按段进行的,所以段合并会使缓存的查询无效。

以下设置是静态的,必须在集群中的每个数据节点上进行配置:

indices.queries.cache.size
控制过滤器缓存的内存大小,默认为10%。 接受百分比值(如5%)或精确值(如512mb)。

以下设置是可以基于每个索引进行配置的index(索引)设置。 只能在索引创建时或在关闭的索引(closed index)上设置:

index.queries.cache.enabled
控制是否启用查询缓存。接受 true (默认值) or false