module Chewy::Search::ClassMethods

Public Instance Methods

all() click to toggle source

This is the entry point for the request composition, however, most of the {Chewy::Search::Request} methods are delegated directly as well.

This method also provides an ability to use names scopes.

@example

PlacesIndex.all.limit(10)
# is basically the same as:
PlacesIndex.limit(10)

@see Chewy::Search::Request @see Chewy::Search::Scoping @return [Chewy::Search::Request] request instance

# File lib/chewy/search.rb, line 42
def all
  search_class.scopes.last || search_class.new(self)
end
method_missing(name, *args, &block) click to toggle source
Calls superclass method
# File lib/chewy/search.rb, line 59
               def method_missing(name, *args, &block)
  if search_class::DELEGATED_METHODS.include?(name)
    all.send(name, *args, &block)
  else
    super
  end
end
respond_to_missing?(name, _) click to toggle source
Calls superclass method
# File lib/chewy/search.rb, line 67
def respond_to_missing?(name, _)
  search_class::DELEGATED_METHODS.include?(name) || super
end
search_string(query, options = {}) click to toggle source

A simple way to execute search string query.

@see www.elastic.co/guide/en/elasticsearch/reference/current/search-uri-request.html @return [Hash] the request result

# File lib/chewy/search.rb, line 50
def search_string(query, options = {})
  options = options.merge(all.render.slice(:index).merge(q: query))
  Chewy.client.search(options)
end

Private Instance Methods

build_search_class(base) click to toggle source
# File lib/chewy/search.rb, line 77
def build_search_class(base)
  search_class = Class.new(base)

  delegate_scoped self, search_class, scopes
  const_set('Query', search_class)
end
delegate_scoped(source, destination, methods) click to toggle source
# File lib/chewy/search.rb, line 84
def delegate_scoped(source, destination, methods)
  methods.each do |method|
    destination.class_eval do
      define_method method do |*args, &block|
        scoping { source.public_send(method, *args, &block) }
      end
      ruby2_keywords method
    end
  end
end
search_class() click to toggle source
# File lib/chewy/search.rb, line 73
def search_class
  @search_class ||= build_search_class(Chewy.search_class)
end