class Elasticsearch::DSL::Search::Aggregation

Wraps the `aggregations` part of a search definition

@see www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html

Public Class Methods

new(*args, &block) click to toggle source
# File lib/elasticsearch/dsl/search/aggregation.rb, line 37
def initialize(*args, &block)
  @block = block
end

Public Instance Methods

aggregation(*args, &block) click to toggle source

Defines an aggregation nested in another one

# File lib/elasticsearch/dsl/search/aggregation.rb, line 58
def aggregation(*args, &block)
  call
  @value.__send__ :aggregation, *args, &block
end
aggregations() click to toggle source

Returns the aggregations

# File lib/elasticsearch/dsl/search/aggregation.rb, line 65
def aggregations
  call
  @value.__send__ :aggregations
end
call() click to toggle source

Evaluates the block passed to initializer, ensuring it is called just once

@return [self]

@api private

# File lib/elasticsearch/dsl/search/aggregation.rb, line 76
def call
  @block.arity < 1 ? self.instance_eval(&@block) : @block.call(self) if @block && ! @_block_called
  @_block_called = true
  self
end
method_missing(name, *args, &block) click to toggle source

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

@raise [NoMethodError] When the corresponding class cannot be found

Calls superclass method
# File lib/elasticsearch/dsl/search/aggregation.rb, line 45
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
to_hash(options={}) click to toggle source

Converts the object to a Hash

@return [Hash]

# File lib/elasticsearch/dsl/search/aggregation.rb, line 86
def to_hash(options={})
  call

  if @value
    case
      when @value.respond_to?(:to_hash)
        @value.to_hash
      else
        @value
    end
  else
    {}
  end
end