module ChewyQuery::Builder::Compose
Protected Instance Methods
_filtered_query(query, filter, options = {})
click to toggle source
# File lib/chewy_query/builder/compose.rb, line 7 def _filtered_query(query, filter, options = {}) query = { match_all: {} } if !query.present? && filter.present? if filter.present? filtered = if query.present? { query: { filtered: { query: query, filter: filter } } } else { query: { filtered: { filter: filter } } } end filtered[:query][:filtered].merge!(strategy: options[:strategy].to_s) if options[:strategy].present? filtered elsif query.present? { query: query } else { } end end
_filters_join(filters, logic)
click to toggle source
# File lib/chewy_query/builder/compose.rb, line 46 def _filters_join(filters, logic) filters = filters.compact if filters.many? || (filters.any? && logic == :must_not) case logic when :and, :or { logic => filters } when :must, :should, :must_not { bool: { logic => filters } } else { bool: { should: filters, minimum_should_match: logic } } end else filters.first end end
_queries_join(queries, logic)
click to toggle source
# File lib/chewy_query/builder/compose.rb, line 25 def _queries_join(queries, logic) queries = queries.compact if queries.many? || (queries.any? && logic == :must_not) case logic when :dis_max { dis_max: { queries: queries } } when :must, :should, :must_not { bool: { logic => queries } } else if logic.is_a?(Float) { dis_max: { queries: queries, tie_breaker: logic } } else { bool: { should: queries, minimum_should_match: logic } } end end else queries.first end end