Module: OpenSearch::DSL::Search::BaseAggregationComponent::InstanceMethods

Defined in:
lib/opensearch/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



48
49
50
51
52
53
54
55
# 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

Instance Attribute Details

#aggregationsObject (readonly)

Returns the value of attribute aggregations.



42
43
44
# File 'lib/opensearch/dsl/search/base_aggregation_component.rb', line 42

def aggregations
  @aggregations
end

Instance Method Details

#aggregation(*args, &block) ⇒ self

Adds a nested aggregation into the aggregation definition

Returns:

  • (self)


61
62
63
64
65
# 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

#to_hash(options = {}) ⇒ Hash

Convert the aggregations to a Hash

A default implementation, DSL classes can overload it.

Returns:

  • (Hash)


73
74
75
76
77
78
79
80
81
82
# 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