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



26
27
28
29
30
31
32
33
34
35
# File 'lib/elasticsearch/dsl/search/base_aggregation_component.rb', line 26

def method_missing(name, *args, &block)
  klass = Utils.__camelize(name)
  if Aggregations.const_defined? klass
    @value = Aggregations.const_get(klass).new *args, &block
  elsif @block
    @block.binding.eval('self').send(name, *args, &block)
  else
    super
  end
end

Instance Attribute Details

#aggregationsObject (readonly)

Returns the value of attribute aggregations.



20
21
22
# File 'lib/elasticsearch/dsl/search/base_aggregation_component.rb', line 20

def aggregations
  @aggregations
end

Instance Method Details

#aggregation(*args, &block) ⇒ self

Adds a nested aggregation into the aggregation definition

Returns:

  • (self)


41
42
43
44
45
# File 'lib/elasticsearch/dsl/search/base_aggregation_component.rb', line 41

def aggregation(*args, &block)
  @aggregations ||= AggregationsCollection.new
  @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)


53
54
55
56
57
58
59
60
61
62
# File 'lib/elasticsearch/dsl/search/base_aggregation_component.rb', line 53

def to_hash(options={})
  call

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

  if @aggregations
    @hash[:aggregations] = @aggregations.to_hash
  end
  @hash
end