Module: Elasticsearch::Persistence::Repository::Search
- Includes:
- QueryCache
- Included in:
- Class
- Defined in:
- lib/elasticsearch/persistence/repository/search.rb
Overview
Returns a collection of domain objects by an Elasticsearch query
Instance Method Summary collapse
-
#count(query_or_definition = nil, options = {}) ⇒ Integer
Return the number of domain object in the index.
-
#search(query_or_definition, options = {}) ⇒ Elasticsearch::Persistence::Repository::Response::Results
Returns a collection of domain objects by an Elasticsearch query.
Methods included from QueryCache
Instance Method Details
#count(query_or_definition = nil, options = {}) ⇒ Integer
Return the number of domain object in the index
79 80 81 82 83 84 85 86 |
# File 'lib/elasticsearch/persistence/repository/search.rb', line 79 def count(query_or_definition = nil, = {}) query_or_definition ||= { query: { match_all: {} } } request = { index: index_name, body: query_or_definition.to_hash } response = cache_query(to_curl(request.merge(), "_count"), klass) { client.count(request.merge()) } response end |
#search(query_or_definition, options = {}) ⇒ Elasticsearch::Persistence::Repository::Response::Results
Returns a collection of domain objects by an Elasticsearch query
Pass the query either as a string or a Hash-like object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/elasticsearch/persistence/repository/search.rb', line 42 def search(query_or_definition, = {}) request = { index: index_name, body: query_or_definition.to_hash } case when query_or_definition.respond_to?(:to_hash) request.merge!(body: query_or_definition.to_hash) when query_or_definition.is_a?(String) request.merge!(q: query_or_definition) else raise ArgumentError, "[!] Pass the search definition as a Hash-like object or pass the query as a String" + " -- #{query_or_definition.class} given." end response = cache_query(to_curl(request.merge()), klass) { client.search(request.merge()) } Response::Results.new(self, response) end |