Search in sources :

Example 21 with Cardinality

use of org.elasticsearch.search.aggregations.metrics.cardinality.Cardinality 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

Cardinality (org.elasticsearch.search.aggregations.metrics.cardinality.Cardinality)21 SearchResponse (org.elasticsearch.action.search.SearchResponse)20 ElasticsearchAssertions.assertSearchResponse (org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertSearchResponse)19 Script (org.elasticsearch.script.Script)8 ImmutableMap (com.google.common.collect.ImmutableMap)2 Terms (org.elasticsearch.search.aggregations.bucket.terms.Terms)2 AuthorisationException (com.atlassian.stash.exception.AuthorisationException)1 Repository (com.atlassian.stash.repository.Repository)1 ImmutableSet (com.google.common.collect.ImmutableSet)1 GlobalSettings (com.palantir.stash.codesearch.admin.GlobalSettings)1 IOException (java.io.IOException)1 ArrayList (java.util.ArrayList)1 Map (java.util.Map)1 ServletException (javax.servlet.ServletException)1 SearchPhaseExecutionException (org.elasticsearch.action.search.SearchPhaseExecutionException)1 SearchRequestBuilder (org.elasticsearch.action.search.SearchRequestBuilder)1 ShardSearchFailure (org.elasticsearch.action.search.ShardSearchFailure)1 TimeValue (org.elasticsearch.common.unit.TimeValue)1 FilterBuilder (org.elasticsearch.index.query.FilterBuilder)1 FilterBuilders.andFilter (org.elasticsearch.index.query.FilterBuilders.andFilter)1