class Dilute::Query
Attributes
chained[R]
for_class[R]
from_elastic_search[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