Module: Elasticsearch::DSL::Search::BaseAggregationComponent::InstanceMethods

Defined in:
lib/elasticsearch/dsl/search/base_aggregation_component.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args, &block) ⇒ Object

Looks up the corresponding class for a method being invoked, and initializes it

Raises:

  • (NoMethodError)

    When the corresponding class cannot be found



22
23
24
25
26
27
28
29
# File 'lib/elasticsearch/dsl/search/base_aggregation_component.rb', line 22

def method_missing(name, *args, &block)
  klass = Utils.__camelize(name)
  if Aggregations.const_defined? klass
    @value = Aggregations.const_get(klass).new *args, &block
  else
    raise NoMethodError, "undefined method '#{name}' for #{self}"
  end
end

Instance Attribute Details

#aggregationsObject (readonly)

Returns the value of attribute aggregations.



16
17
18
# File 'lib/elasticsearch/dsl/search/base_aggregation_component.rb', line 16

def aggregations
  @aggregations
end

Instance Method Details

#aggregation(*args, &block) ⇒ self

Adds a nested aggregation into the aggregation definition

Returns:

  • (self)


35
36
37
38
39
# File 'lib/elasticsearch/dsl/search/base_aggregation_component.rb', line 35

def aggregation(*args, &block)
  @aggregations ||= {}
  @aggregations.update args.first => Aggregation.new(*args, &block)
  self
end

#to_hash(options = {}) ⇒ Hash

Convert the aggregations to a Hash

A default implementation, DSL classes can overload it.

Returns:

  • (Hash)


47
48
49
50
51
52
53
54
55
56
57
# File 'lib/elasticsearch/dsl/search/base_aggregation_component.rb', line 47

def to_hash(options={})
  call

  @hash = { name => @args } unless @hash && @hash[name] && ! @hash[name].empty?

  if @aggregations
    @hash[:aggregations] = {}
    @aggregations.map { |name, value| @hash[:aggregations][name] = value.to_hash }
  end
  @hash
end