Module: Elastics::QueryHelper
- Included in:
- SearchQuery
- Defined in:
- lib/elastics/query_helper.rb
Instance Method Summary collapse
-
#normalize_filters(filters) ⇒ Object
Combines multiple filters into
andfilter. -
#normalize_query(query, filters) ⇒ Object
Wraps given query into
filteredquery if filter is present. -
#terms_array_query(field, val, options = {}) ⇒ Object
Returns
nilif falsy value or empty array is given. -
#terms_query(field, val, options = {}) ⇒ Object
Returns
term(for scalar value) orterms(for array) query node for specified field.
Instance Method Details
#normalize_filters(filters) ⇒ Object
Combines multiple filters into and filter. Returns unmodified input unless it was an array.
5 6 7 8 9 |
# File 'lib/elastics/query_helper.rb', line 5 def normalize_filters(filters) return filters unless filters.is_a?(Array) return filters[0] if 2 > filters.size {and: {filters: filters}} end |
#normalize_query(query, filters) ⇒ Object
Wraps given query into filtered query if filter is present. Also replaces empty query with match_all.
13 14 15 16 17 18 19 20 21 |
# File 'lib/elastics/query_helper.rb', line 13 def normalize_query(query, filters) filter = normalize_filters filters query ||= {match_all: {}} return query unless filter {filtered: { query: query, filter: filter, }} end |
#terms_array_query(field, val, options = {}) ⇒ Object
Returns nil if falsy value or empty array is given. Other way it returns term(s) query for it.
35 36 37 |
# File 'lib/elastics/query_helper.rb', line 35 def terms_array_query(field, val, = {}) terms_query(field, val, ) if val && (!val.is_a?(Array) || val.any?) end |
#terms_query(field, val, options = {}) ⇒ Object
Returns term(for scalar value) or terms (for array) query node for specified field.
25 26 27 28 29 30 31 |
# File 'lib/elastics/query_helper.rb', line 25 def terms_query(field, val, = {}) if val.is_a?(Array) {terms: {field => val}.merge!()} else {term: {field => val}} end end |