Class IndicesRequestCache

java.lang.Object
org.elasticsearch.indices.IndicesRequestCache
All Implemented Interfaces:
Closeable, AutoCloseable, RemovalListener<org.elasticsearch.indices.IndicesRequestCache.Key,BytesReference>

public final class IndicesRequestCache extends Object implements RemovalListener<org.elasticsearch.indices.IndicesRequestCache.Key,BytesReference>, Closeable
The indices request cache allows to cache a shard level request stage responses, helping with improving similar requests that are potentially expensive (because of aggs for example). The cache is fully coherent with the semantics of NRT (the index reader cache key is part of the cache key), and relies on size based eviction to evict old reader associated cache entries as well as scheduler reaper to clean readers that are no longer used or closed shards.

Currently, the cache is only enabled for count requests, and can only be opted in on an index level setting that can be dynamically changed and defaults to false.

There are still several TODOs left in this class, some easily addressable, some more complex, but the support is functional.

  • Field Details

    • INDEX_CACHE_REQUEST_ENABLED_SETTING

      public static final Setting<Boolean> INDEX_CACHE_REQUEST_ENABLED_SETTING
      A setting to enable or disable request caching on an index level. Its dynamic by default since we are checking on the cluster state IndexMetadata always.
    • INDICES_CACHE_QUERY_SIZE

      public static final Setting<ByteSizeValue> INDICES_CACHE_QUERY_SIZE
    • INDICES_CACHE_QUERY_EXPIRE

      public static final Setting<TimeValue> INDICES_CACHE_QUERY_EXPIRE
  • Method Details