module OpenSearch::DSL::Search::BaseAggregationComponent::InstanceMethods

Attributes

aggregations[R]

Public Instance Methods

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

Adds a nested aggregation into the aggregation definition

@return [self]

# File lib/opensearch/dsl/search/base_aggregation_component.rb, line 61
def aggregation(*args, &block)
  @aggregations ||= AggregationsCollection.new
  @aggregations.update args.first => Aggregation.new(*args, &block)
  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/base_aggregation_component.rb, line 48
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

Convert the aggregations to a Hash

A default implementation, DSL classes can overload it.

@return [Hash]

# File lib/opensearch/dsl/search/base_aggregation_component.rb, line 73
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