Module: Elasticsearch::Persistence::QueryCache

Included in:
Repository::Search
Defined in:
lib/elasticsearch/persistence/query_cache.rb

Defined Under Namespace

Modules: CacheMethods

Instance Method Summary collapse

Instance Method Details

#cache_query(query, klass) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/elasticsearch/persistence/query_cache.rb', line 38

def cache_query(query, klass)
  cache_key = sha(query)
  Elasticsearch::Persistence.force_cache
  result = if store.exist?(cache_key) && Elasticsearch::Persistence.force_cache
      ActiveSupport::Notifications.instrument "cache.query.elasticsearch",
        name: klass.name,
        query: query

      store.fetch cache_key
    else
      res = []
      ActiveSupport::Notifications.instrument "query.elasticsearch",
        name: klass.name,
        query: query do
        res = yield
      end

      store.write(cache_key, res) if Elasticsearch::Persistence.force_cache
      res
    end
  result.dup
end

#storeObject



34
35
36
# File 'lib/elasticsearch/persistence/query_cache.rb', line 34

def store
  @query_cache ||= Elasticsearch::Persistence.setup_store!
end