module Elastic::Nodes::Concerns::Aggregable

Public Instance Methods

aggregate(_node) click to toggle source
# File lib/elastic/nodes/concerns/aggregable.rb, line 15
def aggregate(_node)
  raise ArgumentError, 'node must provide a name' unless _node.name
  aggs << _node
end
aggregations() click to toggle source
# File lib/elastic/nodes/concerns/aggregable.rb, line 11
def aggregations
  @aggs.each
end
aggregations=(_aggs) click to toggle source
# File lib/elastic/nodes/concerns/aggregable.rb, line 7
def aggregations=(_aggs)
  @aggs = _aggs.dup.to_a
end
clone() click to toggle source
Calls superclass method
# File lib/elastic/nodes/concerns/aggregable.rb, line 25
def clone
  node = super
  node.aggregations = aggs.map(&:clone)
  node
end
has_aggregations?() click to toggle source
# File lib/elastic/nodes/concerns/aggregable.rb, line 3
def has_aggregations?
  aggs.count > 0
end
simplify() click to toggle source
Calls superclass method
# File lib/elastic/nodes/concerns/aggregable.rb, line 31
def simplify
  node = super
  node.aggregations = aggs.map(&:simplify)
  node
end
traverse(&_block) click to toggle source
Calls superclass method
# File lib/elastic/nodes/concerns/aggregable.rb, line 20
def traverse(&_block)
  super
  aggs.each { |a| a.traverse(&_block) }
end

Private Instance Methods

aggs() click to toggle source
# File lib/elastic/nodes/concerns/aggregable.rb, line 39
def aggs
  @aggs ||= []
end
load_aggs_results(_raw, _formatter) click to toggle source
# File lib/elastic/nodes/concerns/aggregable.rb, line 48
def load_aggs_results(_raw, _formatter)
  {}.tap do |result|
    aggs.each do |node|
      result[node.name] = node.handle_result(_raw[node.name.to_s], _formatter)
    end
  end
end
render_aggs(_into, _options) click to toggle source
# File lib/elastic/nodes/concerns/aggregable.rb, line 43
def render_aggs(_into, _options)
  _into['aggs'] = Hash[aggs.map { |a| [a.name.to_s, a.render(_options)] }] if has_aggregations?
  _into
end