Class: SearchFlip::Aggregation
- Inherits:
-
Object
- Object
- SearchFlip::Aggregation
- Includes:
- Aggregatable, Filterable
- Defined in:
- lib/search_flip/aggregation.rb
Overview
The SearchFlip::Aggregation class puts together everything required to use the ElasticSearch aggregation framework via mixins and adds a method to convert it to a hash format to be used in the request.
Instance Method Summary collapse
-
#fresh ⇒ SearchFlip::Aggregation
private
Simply dups the object for api compatability.
-
#to_hash ⇒ Hash
private
Converts the aggregation to a hash format that can be used in the request.
Methods included from Aggregatable
Methods included from Filterable
#exists, #exists_not, #filter, included, #match_all, #must, #must_not, #range, #search, #should, #where, #where_not
Instance Method Details
#fresh ⇒ SearchFlip::Aggregation
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Simply dups the object for api compatability.
52 53 54 |
# File 'lib/search_flip/aggregation.rb', line 52 def fresh dup end |
#to_hash ⇒ Hash
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Converts the aggregation to a hash format that can be used in the request.
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/search_flip/aggregation.rb', line 17 def to_hash res = {} res[:aggregations] = aggregation_values if aggregation_values if must_values || search_values || must_not_values || should_values || filter_values if SearchFlip.version.to_i >= 2 res[:filter] = { bool: {}. merge(must_values || search_values ? { must: (must_values || []) + (search_values || []) } : {}). merge(must_not_values ? { must_not: must_not_values } : {}). merge(should_values ? { should: should_values } : {}). merge(filter_values ? { filter: filter_values } : {}) } else filters = (filter_values || []) + (must_not_values || []).map { |must_not_value| { not: must_not_value } } queries = {}. merge(must_values || search_values ? { must: (must_values || []) + (search_values || []) } : {}). merge(should_values ? { should: should_values } : {}) filters_and_queries = filters + (queries.size > 0 ? [bool: queries] : []) res[:filter] = filters_and_queries.size > 1 ? { and: filters_and_queries } : filters_and_queries.first end end res end |