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



45
46
47
48
49
# File 'lib/opensearch/dsl/search/base_aggregation_component.rb', line 45

def method_missing(name, *args, &block)
  klass = Utils.__camelize(name)
  raise NoMethodError, "undefined method '#{name}' for #{self}" unless Aggregations.const_defined? klass
  @value = Aggregations.const_get(klass).new(*args, &block)
end

Instance Attribute Details

#aggregationsObject (readonly)

Returns the value of attribute aggregations.



39
40
41
# File 'lib/opensearch/dsl/search/base_aggregation_component.rb', line 39

def aggregations
  @aggregations
end

Instance Method Details

#aggregation(*args, &block) ⇒ self

Adds a nested aggregation into the aggregation definition

Returns:

  • (self)


59
60
61
62
63
# File 'lib/opensearch/dsl/search/base_aggregation_component.rb', line 59

def aggregation(*args, &block)
  @aggregations ||= AggregationsCollection.new
  @aggregations.update args.first => Aggregation.new(*args, &block)
  self
end

#respond_to_missing?(method_name, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/opensearch/dsl/search/base_aggregation_component.rb', line 51

def respond_to_missing?(method_name, include_private = false)
  Aggregations.const_defined?(Utils.__camelize(method_name)) || super
end

#to_hash(_options = {}) ⇒ Hash

Convert the aggregations to a Hash

A default implementation, DSL classes can overload it.

Returns:

  • (Hash)


71
72
73
74
75
76
77
78
# File 'lib/opensearch/dsl/search/base_aggregation_component.rb', line 71

def to_hash(_options = {})
  call

  @hash = { name => @args } unless @hash && @hash[name] && !@hash[name].empty?

  @hash[:aggregations] = @aggregations.to_hash if @aggregations
  @hash
end