class OpenSearch::DSL::Search::Aggregation

Wraps the ‘aggregations` part of a search definition

Public Class Methods

new(*args, &block) click to toggle source
# File lib/opensearch/dsl/search/aggregation.rb, line 45
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/opensearch/dsl/search/aggregation.rb, line 64
def aggregation(*args, &block)
  call
  @value.__send__ :aggregation, *args, &block
end
aggregations() click to toggle source

Returns the aggregations

# File lib/opensearch/dsl/search/aggregation.rb, line 71
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/opensearch/dsl/search/aggregation.rb, line 82
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

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

Converts the object to a Hash

@return [Hash]

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

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