From 424b4ed4eab54f046c23623d2ceb74adc488755b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Istv=C3=A1n=20Zolt=C3=A1n=20Szab=C3=B3?= Date: Mon, 20 Jan 2020 11:11:57 +0100 Subject: [PATCH] [DOCS] Expands the documentation of Node Query Cache (#51105) Co-authored-by: debadair --- .../modules/indices/query_cache.asciidoc | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/docs/reference/modules/indices/query_cache.asciidoc b/docs/reference/modules/indices/query_cache.asciidoc index b61c2a6eee0..9b1736096f6 100644 --- a/docs/reference/modules/indices/query_cache.asciidoc +++ b/docs/reference/modules/indices/query_cache.asciidoc @@ -1,27 +1,34 @@ [[query-cache]] === Node Query Cache -The query cache is responsible for caching the results of queries. -There is one queries cache per node that is shared by all shards. -The cache implements an LRU eviction policy: when a cache becomes full, the -least recently used data is evicted to make way for new data. -It is not possible to look at the contents being cached. +The results of queries used in the filter context are cached in the node query +cache for fast lookup. There is one queries cache per node that is shared by all +shards. The cache uses an LRU eviction policy: when the cache is full, the least +recently used query results are evicted to make way for new data. You cannot +inspect the contents of the query cache. -The query cache only caches queries which are being used in a filter context. +Term queries and queries used outside of a filter context are not eligible for +caching. + +By default, the cache holds a maximum of 10000 queries in up to 10% of the total +heap space. To determine if a query is eligible for caching, {es} maintains a +query history to track occurrences. + +Caching is done on a per segment basis if a segment contains at least 10000 +documents and the segment has at least 3% of the total documents of a shard. +Because caching is per segment, merging segments can invalidate cached queries. The following setting is _static_ and must be configured on every data node in the cluster: `indices.queries.cache.size`:: - Controls the memory size for the filter cache , defaults to `10%`. Accepts either a percentage value, like `5%`, or an exact value, like `512mb`. -The following setting is an _index_ setting that can be configured on a +The following setting is an _index_ setting that can be configured on a per-index basis. Can only be set at index creation time or on a <>: `index.queries.cache.enabled`:: - Controls whether to enable query caching. Accepts `true` (default) or `false`.