class MetricsSpec::Metrics
Constants
- DefaultHostField
- DefaultTimeField
- HostField
- TimestampDescSorter
Attributes
aggs[R]
filters[R]
query_string[R]
Public Class Methods
new(query_string, host_field: nil)
click to toggle source
# File lib/metricsspec/metrics.rb, line 5 def initialize(query_string, host_field: nil) @query_string = query_string @filters = [] end
Public Instance Methods
[](field)
click to toggle source
# File lib/metricsspec/metrics.rb, line 16 def [](field) Field.new(self, field) end
at(host, field: DefaultHostField)
click to toggle source
# File lib/metricsspec/metrics.rb, line 72 def at(host, field: DefaultHostField) term(field, host) end
count()
click to toggle source
# File lib/metricsspec/metrics.rb, line 20 def count body = Jbuilder.encode do |json| json.query do json.query_string do json.query @query_string end end json.filter build_filters() unless @filters.empty? end return MetricsSpec.client.count(body: body)["count"] end
empty?()
click to toggle source
# File lib/metricsspec/metrics.rb, line 47 def empty? count.zero? end
initialize_copy(orig)
click to toggle source
# File lib/metricsspec/metrics.rb, line 12 def initialize_copy(orig) @filters = orig.filters.dup end
last(n=1)
click to toggle source
# File lib/metricsspec/metrics.rb, line 34 def last(n=1) body = Jbuilder.encode do |json| json.size n json.sort do json.array! TimestampDescSorter end end hits = search(body)["hits"]["hits"] hits.map! {|hit| hit["_source"] } return hits.first if n == 1 return hits end
range(field, **range)
click to toggle source
# File lib/metricsspec/metrics.rb, line 60 def range(field, **range) filter = { range: { field => range } } return filtered(filter) end
term(field, term)
click to toggle source
# File lib/metricsspec/metrics.rb, line 51 def term(field, term) filter = { term: { field => term } } return filtered(filter) end
within(seconds, field: DefaultTimeField)
click to toggle source
# File lib/metricsspec/metrics.rb, line 76 def within(seconds, field: DefaultTimeField) range(field, gte: "now-#{seconds}s") end
Private Instance Methods
build_filters()
click to toggle source
# File lib/metricsspec/metrics.rb, line 103 def build_filters return @filters.first if @filters.size == 1 return Jbuilder.new {|json| json.and @filters } end
filtered(filter)
click to toggle source
# File lib/metricsspec/metrics.rb, line 108 def filtered(filter) duped = self.dup duped.filters.push(filter) return duped end
search(body)
click to toggle source
# File lib/metricsspec/metrics.rb, line 99 def search(body) MetricsSpec.client.search(q: @query_string, body: body) end