module Elos::QueryBuilder::Filters
Public Instance Methods
and_filter(*filters)
click to toggle source
# File lib/elos/query_builder/filters.rb, line 10 def and_filter(*filters) filters = filters.first if filters.first.is_a?(Array) filters.compact! { and: filters } unless filters.empty? end
exists_filter(key)
click to toggle source
# File lib/elos/query_builder/filters.rb, line 26 def exists_filter(key) { exists: { field: key } } end
missing_filter(key)
click to toggle source
# File lib/elos/query_builder/filters.rb, line 30 def missing_filter(key) { missing: { field: key } } end
or_filter(*filters)
click to toggle source
# File lib/elos/query_builder/filters.rb, line 4 def or_filter(*filters) filters = filters.first if filters.first.is_a?(Array) filters.compact! { or: filters } unless filters.empty? end
range_filter(key, min: nil, max: nil)
click to toggle source
# File lib/elos/query_builder/filters.rb, line 34 def range_filter(key, min: nil, max: nil) return unless min || max r = { range: { key => {} } } r[:range][key][:gte] = min if min r[:range][key][:lte] = max if max r end
term_filter(key, params_sym = nil, value: nil)
click to toggle source
# File lib/elos/query_builder/filters.rb, line 16 def term_filter(key, params_sym = nil, value: nil) v = value.nil? ? params[params_sym || key] : value { term: { key => v } } unless v.nil? end
terms_filter(key, params_sym = nil, values: nil)
click to toggle source
# File lib/elos/query_builder/filters.rb, line 21 def terms_filter(key, params_sym = nil, values: nil) v = value.nil? ? params[params_sym || key.to_s.pluralize.to_sym] : value { terms: { key => v } } unless v.empty? end