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



39
40
41
42
43
44
45
46
47
48
# File 'lib/elasticsearch/dsl/search/base_aggregation_component.rb', line 39

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.



33
34
35
# File 'lib/elasticsearch/dsl/search/base_aggregation_component.rb', line 33

def aggregations
  @aggregations
end

Instance Method Details

#aggregation(*args, &block) ⇒ self

Adds a nested aggregation into the aggregation definition

Returns:

  • (self)


54
55
56
57
58
# File 'lib/elasticsearch/dsl/search/base_aggregation_component.rb', line 54

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)


66
67
68
69
70
71
72
73
74
75
# File 'lib/elasticsearch/dsl/search/base_aggregation_component.rb', line 66

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