Class: Elasticated::TermsAggregation
- Inherits:
-
Aggregation
- Object
- Aggregation
- Elasticated::TermsAggregation
- Defined in:
- lib/elasticated/aggregations/terms_aggregation.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#order_field ⇒ Object
Como usar el parametro order: Se puede ordenar por un unico criterio haciendo por ejemplo: group :user, order: :born_date, order_method: :desc Se puede ordenar por un unico criterio haciendo tambien: group :user, order: { born_date: :desc } Se puede ordenar por un unico criterio especificando el metodo en el mismo string: group :user, order: ‘born_date:desc’ Se puede ordenar por multiples criterios haciendo: group :user, order: { born_date: :desc, first_name: :asc } Se puede ordenar por multiples criterios especificando el metodo en el mismo string: group :user, order: [‘born_date:desc’, ‘first_name:asc’].
-
#order_method ⇒ Object
Como usar el parametro order: Se puede ordenar por un unico criterio haciendo por ejemplo: group :user, order: :born_date, order_method: :desc Se puede ordenar por un unico criterio haciendo tambien: group :user, order: { born_date: :desc } Se puede ordenar por un unico criterio especificando el metodo en el mismo string: group :user, order: ‘born_date:desc’ Se puede ordenar por multiples criterios haciendo: group :user, order: { born_date: :desc, first_name: :asc } Se puede ordenar por multiples criterios especificando el metodo en el mismo string: group :user, order: [‘born_date:desc’, ‘first_name:asc’].
-
#size ⇒ Object
Como usar el parametro order: Se puede ordenar por un unico criterio haciendo por ejemplo: group :user, order: :born_date, order_method: :desc Se puede ordenar por un unico criterio haciendo tambien: group :user, order: { born_date: :desc } Se puede ordenar por un unico criterio especificando el metodo en el mismo string: group :user, order: ‘born_date:desc’ Se puede ordenar por multiples criterios haciendo: group :user, order: { born_date: :desc, first_name: :asc } Se puede ordenar por multiples criterios especificando el metodo en el mismo string: group :user, order: [‘born_date:desc’, ‘first_name:asc’].
Attributes inherited from Aggregation
#alias_name, #extra_params, #field
Instance Method Summary collapse
- #build ⇒ Object
-
#initialize(field, options = {}) ⇒ TermsAggregation
constructor
A new instance of TermsAggregation.
Methods inherited from Aggregation
Methods included from Mixins::Inspectionable
Methods included from Mixins::BlockEvaluation
Methods included from Mixins::Clonable
Constructor Details
#initialize(field, options = {}) ⇒ TermsAggregation
Returns a new instance of TermsAggregation.
23 24 25 26 27 28 |
# File 'lib/elasticated/aggregations/terms_aggregation.rb', line 23 def initialize(field, ={}) self.order_field = .delete(:order) || .delete(:order_by) self.order_method = .delete :order_method self.size = .delete(:size) || .delete(:limit) || .delete(:top) super end |
Instance Attribute Details
#order_field ⇒ Object
Como usar el parametro order:
Se puede ordenar por un unico criterio haciendo por ejemplo:
group :user, order: :born_date, order_method: :desc
Se puede ordenar por un unico criterio haciendo tambien:
group :user, order: { born_date: :desc }
Se puede ordenar por un unico criterio especificando el metodo en el mismo string:
group :user, order: 'born_date:desc'
Se puede ordenar por multiples criterios haciendo:
group :user, order: { born_date: :desc, first_name: :asc }
Se puede ordenar por multiples criterios especificando el metodo en el mismo string:
group :user, order: ['born_date:desc', 'first_name:asc']
21 22 23 |
# File 'lib/elasticated/aggregations/terms_aggregation.rb', line 21 def order_field @order_field end |
#order_method ⇒ Object
Como usar el parametro order:
Se puede ordenar por un unico criterio haciendo por ejemplo:
group :user, order: :born_date, order_method: :desc
Se puede ordenar por un unico criterio haciendo tambien:
group :user, order: { born_date: :desc }
Se puede ordenar por un unico criterio especificando el metodo en el mismo string:
group :user, order: 'born_date:desc'
Se puede ordenar por multiples criterios haciendo:
group :user, order: { born_date: :desc, first_name: :asc }
Se puede ordenar por multiples criterios especificando el metodo en el mismo string:
group :user, order: ['born_date:desc', 'first_name:asc']
21 22 23 |
# File 'lib/elasticated/aggregations/terms_aggregation.rb', line 21 def order_method @order_method end |
#size ⇒ Object
Como usar el parametro order:
Se puede ordenar por un unico criterio haciendo por ejemplo:
group :user, order: :born_date, order_method: :desc
Se puede ordenar por un unico criterio haciendo tambien:
group :user, order: { born_date: :desc }
Se puede ordenar por un unico criterio especificando el metodo en el mismo string:
group :user, order: 'born_date:desc'
Se puede ordenar por multiples criterios haciendo:
group :user, order: { born_date: :desc, first_name: :asc }
Se puede ordenar por multiples criterios especificando el metodo en el mismo string:
group :user, order: ['born_date:desc', 'first_name:asc']
21 22 23 |
# File 'lib/elasticated/aggregations/terms_aggregation.rb', line 21 def size @size end |
Instance Method Details
#build ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/elasticated/aggregations/terms_aggregation.rb', line 30 def build terms = { field: field, size: (size || 0) } if order_field.is_a? Hash if order_field.size == 1 terms.merge! order: order_field else terms.merge! order: order_field.map{ |field, method| { field => method } } end elsif order_field.is_a? Array terms.merge! order: order_field.map{ |e| order_criteria_from e } else if order_method terms.merge! order: { order_field => order_method || default_order_method } else terms.merge! order: order_criteria_from(order_field) end end if order_field terms.merge! extra_params { terms: terms } end |