Module: Flex::Scope::FilterMethods

Includes:
Utils
Included in:
Flex::Scope
Defined in:
lib/flex/scope/filter_methods.rb

Instance Method Summary collapse

Instance Method Details

#filters(*value) ⇒ Object

accepts one or an array or a list of filter structures



22
23
24
# File 'lib/flex/scope/filter_methods.rb', line 22

def filters(*value)
  deep_merge boolean_wrapper( :filters => array_value(value) )
end

#missing(*fields) ⇒ Object



26
27
28
29
30
31
32
# File 'lib/flex/scope/filter_methods.rb', line 26

def missing(*fields)
  missing_list = []
  for field in fields
    missing_list.push(:missing => field)
  end
  deep_merge :_missing_list => missing_list
end

#range(value) ⇒ Object

accepts one hash of ranges documented at www.elasticsearch.org/guide/reference/query-dsl/range-filter/



45
46
47
# File 'lib/flex/scope/filter_methods.rb', line 45

def range(value)
  deep_merge boolean_wrapper(:range => value)
end

#term(term_or_terms_hash) ⇒ Object

accepts a single key hash or a multiple keys hash, that will be translated in a array of single key hashes



35
36
37
38
39
40
41
# File 'lib/flex/scope/filter_methods.rb', line 35

def term(term_or_terms_hash)
  term_list = []
  term_or_terms_hash.each do |term, value|
    term_list.push(:term => {term => value})
  end
  deep_merge boolean_wrapper(:term_list => term_list)
end

#terms(value) ⇒ Object

accepts also :any_term => nil for missing values



8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/flex/scope/filter_methods.rb', line 8

def terms(value)
  terms, missing_list = {}, []
  value.each { |f, v| v.nil? ? missing_list.push({ :missing => f }) : (terms[f] = v) }
  terms, term = terms.partition{|k,v| v.is_a?(Array)}
  term_list = []
  term.each do |term, value|
    term_list.push(:term => {term => value})
  end
  deep_merge boolean_wrapper( :terms_list    => Hash[terms],
                              :term_list     => term_list,
                              :_missing_list => missing_list )
end