Search in sources :

Example 36 with Stats

use of org.elasticsearch.search.aggregations.metrics.stats.Stats in project graylog2-server by Graylog2.

the class FieldHistogramResult method getResults.

@Override
public Map<Long, Map<String, Number>> getResults() {
    if (result.getBuckets().isEmpty()) {
        return Collections.emptyMap();
    }
    final Map<Long, Map<String, Number>> results = Maps.newTreeMap();
    for (Histogram.Bucket b : result.getBuckets()) {
        final ImmutableMap.Builder<String, Number> resultMap = ImmutableMap.builder();
        resultMap.put("total_count", b.getDocCount());
        final Stats stats = b.getAggregations().get(Searches.AGG_STATS);
        resultMap.put("count", stats.getCount());
        resultMap.put("min", stats.getMin());
        resultMap.put("max", stats.getMax());
        resultMap.put("total", stats.getSum());
        resultMap.put("mean", stats.getAvg());
        // cardinality is only calculated if it was explicitly requested, so this might be null
        final Cardinality cardinality = b.getAggregations().get(Searches.AGG_CARDINALITY);
        resultMap.put("cardinality", cardinality == null ? 0 : cardinality.getValue());
        final DateTime keyAsDate = (DateTime) b.getKey();
        final long timestamp = keyAsDate.getMillis() / 1000L;
        results.put(timestamp, resultMap.build());
    }
    final long minTimestamp = Collections.min(results.keySet());
    final long maxTimestamp = Collections.max(results.keySet());
    final MutableDateTime currentTime = new MutableDateTime(minTimestamp, DateTimeZone.UTC);
    while (currentTime.getMillis() < maxTimestamp) {
        final Map<String, Number> entry = results.get(currentTime.getMillis());
        // advance timestamp by the interval's seconds value
        currentTime.add(interval.getPeriod());
        if (entry == null) {
            // synthesize a 0 value for this timestamp
            results.put(currentTime.getMillis(), EMPTY_RESULT);
        }
    }
    return results;
}
Also used : Histogram(org.elasticsearch.search.aggregations.bucket.histogram.Histogram) Cardinality(org.elasticsearch.search.aggregations.metrics.cardinality.Cardinality) MutableDateTime(org.joda.time.MutableDateTime) ImmutableMap(com.google.common.collect.ImmutableMap) DateTime(org.joda.time.DateTime) MutableDateTime(org.joda.time.MutableDateTime) Stats(org.elasticsearch.search.aggregations.metrics.stats.Stats) ImmutableMap(com.google.common.collect.ImmutableMap) Map(java.util.Map)

Aggregations

Stats (org.elasticsearch.search.aggregations.metrics.stats.Stats)36 SearchResponse (org.elasticsearch.action.search.SearchResponse)33 ElasticsearchAssertions.assertSearchResponse (org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertSearchResponse)31 Terms (org.elasticsearch.search.aggregations.bucket.terms.Terms)12 Script (org.elasticsearch.script.Script)9 AggregationBuilders.extendedStats (org.elasticsearch.search.aggregations.AggregationBuilders.extendedStats)9 Bucket (org.elasticsearch.search.aggregations.bucket.terms.Terms.Bucket)9 ExtendedStats (org.elasticsearch.search.aggregations.metrics.stats.extended.ExtendedStats)9 HashMap (java.util.HashMap)4 Filter (org.elasticsearch.search.aggregations.bucket.filter.Filter)4 Histogram (org.elasticsearch.search.aggregations.bucket.histogram.Histogram)4 ArrayList (java.util.ArrayList)2 Map (java.util.Map)2 TimeValue (org.elasticsearch.common.unit.TimeValue)2 BoolQueryBuilder (org.elasticsearch.index.query.BoolQueryBuilder)2 SearchHit (org.elasticsearch.search.SearchHit)2 Global (org.elasticsearch.search.aggregations.bucket.global.Global)2 Bucket (org.elasticsearch.search.aggregations.bucket.histogram.Histogram.Bucket)2 StatsAggregationBuilder (org.elasticsearch.search.aggregations.metrics.stats.StatsAggregationBuilder)2 Matchers.containsString (org.hamcrest.Matchers.containsString)2