module Elasticsearch::Persistence::QueryCache

Public Instance Methods

cache_query(query, klass) { || ... } click to toggle source
# 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
store() click to toggle source
# File lib/elasticsearch/persistence/query_cache.rb, line 34
def store
  @query_cache ||= Elasticsearch::Persistence.setup_store!
end

Private Instance Methods

sha(str) click to toggle source
# File lib/elasticsearch/persistence/query_cache.rb, line 63
def sha(str)
  Digest::SHA256.new.hexdigest(str)
end