module Elastics::QueryHelper
Public Instance Methods
normalize_filters(filters)
click to toggle source
Combines multiple filters into `and` filter. Returns unmodified input unless it was an array.
# 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)
click to toggle source
Wraps given query into `filtered` query if filter is present. Also replaces empty query with `match_all`.
# 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 = {})
click to toggle source
Returns `nil` if falsy value or empty array is given. Other way it returns term(s) query for it.
# File lib/elastics/query_helper.rb, line 35 def terms_array_query(field, val, options = {}) terms_query(field, val, options) if val && (!val.is_a?(Array) || val.any?) end
terms_query(field, val, options = {})
click to toggle source
Returns `term`(for scalar value) or `terms` (for array) query node for specified field.
# File lib/elastics/query_helper.rb, line 25 def terms_query(field, val, options = {}) if val.is_a?(Array) {terms: {field => val}.merge!(options)} else {term: {field => val}} end end