module Elastic::Dsl::MetricBuilder
Public Instance Methods
average(_field, _options = {})
click to toggle source
# File lib/elastic/dsl/metric_builder.rb, line 3 def average(_field, _options = {}) aggregate_metric(Elastic::Nodes::Agg::Average, _field, _options, 'avg_%s') end
closing(_field, _options = {})
click to toggle source
# File lib/elastic/dsl/metric_builder.rb, line 32 def closing(_field, _options = {}) by = _options.delete :by raise ArgumentError, 'must provide a sorting column' if by.nil? aggregate_metric(Elastic::Nodes::Agg::Top, _field, _options, 'close_%s') do |node| node.add_sort(by, order: :desc) end end
maximum(_field, _options = {})
click to toggle source
# File lib/elastic/dsl/metric_builder.rb, line 15 def maximum(_field, _options = {}) aggregate_metric(Elastic::Nodes::Agg::Maximum, _field, _options, 'max_%s') end
minimum(_field, _options = {})
click to toggle source
# File lib/elastic/dsl/metric_builder.rb, line 11 def minimum(_field, _options = {}) aggregate_metric(Elastic::Nodes::Agg::Minimum, _field, _options, 'min_%s') end
opening(_field, _options = {})
click to toggle source
# File lib/elastic/dsl/metric_builder.rb, line 23 def opening(_field, _options = {}) by = _options.delete :by raise ArgumentError, 'must provide a sorting column' if by.nil? aggregate_metric(Elastic::Nodes::Agg::Top, _field, _options, 'open_%s') do |node| node.add_sort(by, order: :asc) end end
stats(_field, _options = {})
click to toggle source
# File lib/elastic/dsl/metric_builder.rb, line 19 def stats(_field, _options = {}) aggregate_metric(Elastic::Nodes::Agg::Stats, _field, _options, '%s_stats') end
sum(_field, _options = {})
click to toggle source
# File lib/elastic/dsl/metric_builder.rb, line 7 def sum(_field, _options = {}) aggregate_metric(Elastic::Nodes::Agg::Sum, _field, _options, 'sum_%s') end
Private Instance Methods
aggregate_metric(_klass, _field, _options, _default_name, &_block)
click to toggle source
# File lib/elastic/dsl/metric_builder.rb, line 43 def aggregate_metric(_klass, _field, _options, _default_name, &_block) # TODO: detect nested name and wrap node name = _options.delete(:as) || sprintf(_default_name, _field) node = _klass.build(name, _field, _options) _block.call node unless _block.nil? aggregate node end