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 ‘and` filter.
-
#normalize_query(query, filters) ⇒ Object
Wraps given query into ‘filtered` query if filter is present.
-
#terms_array_query(field, val, options = {}) ⇒ Object
Returns ‘nil` if falsy value or empty array is given.
-
#terms_query(field, val, options = {}) ⇒ Object
Returns ‘term`(for scalar value) or `terms` (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 |