class Dilute::Query

Attributes

chained[R]
for_class[R]
options[R]
results[R]

Public Class Methods

new(for_class, options = {}, chained = true) click to toggle source
# File lib/dilute/query.rb, line 5
def initialize(for_class, options = {}, chained = true)
  @for_class, @options, @chained = for_class, options, chained
end

Public Instance Methods

each(*args, &block) click to toggle source
# File lib/dilute/query.rb, line 32
def each(*args, &block)
  return enum_for(__callee__) unless block_given?
  to_a.each(*args, &block)
end
execute!() click to toggle source
# File lib/dilute/query.rb, line 19
def execute!
  @results ||= begin
    search_results = for_class.type.search(size: 25, query: to_query)
    @from_elastic_search = search_results
    search_results.raw["hits"]["hits"].collect {|r| for_class.new(r) }
  end
end
match(q) click to toggle source
# File lib/dilute/query.rb, line 9
def match(q)
  merge_or_chain(:match, q)
end
to_a() click to toggle source
# File lib/dilute/query.rb, line 27
def to_a
  execute!
  results
end
to_query() click to toggle source
# File lib/dilute/query.rb, line 13
def to_query
  query = options.reject {|k,v| v.nil? || v.empty? }
  query[:match_all] ||= {} unless query[:match]
  query
end

Private Instance Methods

merge_or_chain(key, to_merge) click to toggle source
# File lib/dilute/query.rb, line 39
def merge_or_chain(key, to_merge)
  new_options = chained ? options.dup : options
  new_options[key] ||= {}
  new_options[key].merge!(to_merge)
  chained ? self.class.new(for_class, new_options) : new_options[key]
end