Search in sources :

Example 1 with Sum

use of org.elasticsearch.search.aggregations.metrics.sum.Sum in project elasticsearch by elastic.

the class DateRangeIT method testSingleValuedFieldWithSubAggregation.

/*
        Jan 2,      1
        Feb 2,      2
        Feb 15,     3
        Mar 2,      4
        Mar 15,     5
        Mar 23,     6
     */
public void testSingleValuedFieldWithSubAggregation() throws Exception {
    SearchResponse response = client().prepareSearch("idx").addAggregation(dateRange("range").field("date").addUnboundedTo("r1", date(2, 15)).addRange("r2", date(2, 15), date(3, 15)).addUnboundedFrom("r3", date(3, 15)).subAggregation(sum("sum").field("value"))).execute().actionGet();
    assertSearchResponse(response);
    Range range = response.getAggregations().get("range");
    assertThat(range, notNullValue());
    assertThat(range.getName(), equalTo("range"));
    List<? extends Bucket> buckets = range.getBuckets();
    assertThat(buckets.size(), equalTo(3));
    assertThat(range.getProperty("_bucket_count"), equalTo(3));
    Object[] propertiesKeys = (Object[]) range.getProperty("_key");
    Object[] propertiesDocCounts = (Object[]) range.getProperty("_count");
    Object[] propertiesCounts = (Object[]) range.getProperty("sum.value");
    Range.Bucket bucket = buckets.get(0);
    assertThat(bucket, notNullValue());
    assertThat((String) bucket.getKey(), equalTo("r1"));
    assertThat(((DateTime) bucket.getFrom()), nullValue());
    assertThat(((DateTime) bucket.getTo()), equalTo(date(2, 15)));
    assertThat(bucket.getFromAsString(), nullValue());
    assertThat(bucket.getToAsString(), equalTo("2012-02-15T00:00:00.000Z"));
    assertThat(bucket.getDocCount(), equalTo(2L));
    Sum sum = bucket.getAggregations().get("sum");
    assertThat(sum, notNullValue());
    assertThat(sum.getValue(), equalTo((double) 1 + 2));
    assertThat((String) propertiesKeys[0], equalTo("r1"));
    assertThat((long) propertiesDocCounts[0], equalTo(2L));
    assertThat((double) propertiesCounts[0], equalTo((double) 1 + 2));
    bucket = buckets.get(1);
    assertThat(bucket, notNullValue());
    assertThat((String) bucket.getKey(), equalTo("r2"));
    assertThat(((DateTime) bucket.getFrom()), equalTo(date(2, 15)));
    assertThat(((DateTime) bucket.getTo()), equalTo(date(3, 15)));
    assertThat(bucket.getFromAsString(), equalTo("2012-02-15T00:00:00.000Z"));
    assertThat(bucket.getToAsString(), equalTo("2012-03-15T00:00:00.000Z"));
    assertThat(bucket.getDocCount(), equalTo(2L));
    sum = bucket.getAggregations().get("sum");
    assertThat(sum, notNullValue());
    assertThat(sum.getValue(), equalTo((double) 3 + 4));
    assertThat((String) propertiesKeys[1], equalTo("r2"));
    assertThat((long) propertiesDocCounts[1], equalTo(2L));
    assertThat((double) propertiesCounts[1], equalTo((double) 3 + 4));
    bucket = buckets.get(2);
    assertThat(bucket, notNullValue());
    assertThat((String) bucket.getKey(), equalTo("r3"));
    assertThat(((DateTime) bucket.getFrom()), equalTo(date(3, 15)));
    assertThat(((DateTime) bucket.getTo()), nullValue());
    assertThat(bucket.getFromAsString(), equalTo("2012-03-15T00:00:00.000Z"));
    assertThat(bucket.getToAsString(), nullValue());
    assertThat(bucket.getDocCount(), equalTo(numDocs - 4L));
    sum = bucket.getAggregations().get("sum");
    assertThat(sum, notNullValue());
    assertThat((String) propertiesKeys[2], equalTo("r3"));
    assertThat((long) propertiesDocCounts[2], equalTo(numDocs - 4L));
}
Also used : Bucket(org.elasticsearch.search.aggregations.bucket.range.Range.Bucket) Sum(org.elasticsearch.search.aggregations.metrics.sum.Sum) Range(org.elasticsearch.search.aggregations.bucket.range.Range) AggregationBuilders.dateRange(org.elasticsearch.search.aggregations.AggregationBuilders.dateRange) DateTime(org.joda.time.DateTime) SearchResponse(org.elasticsearch.action.search.SearchResponse) ElasticsearchAssertions.assertSearchResponse(org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertSearchResponse)

Example 2 with Sum

use of org.elasticsearch.search.aggregations.metrics.sum.Sum in project elasticsearch by elastic.

the class DoubleTermsIT method testSingleValuedFieldWithSubAggregation.

public void testSingleValuedFieldWithSubAggregation() throws Exception {
    SearchResponse response = client().prepareSearch("idx").setTypes("type").addAggregation(terms("terms").field(SINGLE_VALUED_FIELD_NAME).collectMode(randomFrom(SubAggCollectionMode.values())).subAggregation(sum("sum").field(MULTI_VALUED_FIELD_NAME))).execute().actionGet();
    assertSearchResponse(response);
    Terms terms = response.getAggregations().get("terms");
    assertThat(terms, notNullValue());
    assertThat(terms.getName(), equalTo("terms"));
    assertThat(terms.getBuckets().size(), equalTo(5));
    assertThat(terms.getProperty("_bucket_count"), equalTo(5));
    Object[] propertiesKeys = (Object[]) terms.getProperty("_key");
    Object[] propertiesDocCounts = (Object[]) terms.getProperty("_count");
    Object[] propertiesCounts = (Object[]) terms.getProperty("sum.value");
    for (int i = 0; i < 5; i++) {
        Terms.Bucket bucket = terms.getBucketByKey("" + (double) i);
        assertThat(bucket, notNullValue());
        assertThat(key(bucket), equalTo("" + (double) i));
        assertThat(bucket.getKeyAsNumber().intValue(), equalTo(i));
        assertThat(bucket.getDocCount(), equalTo(1L));
        Sum sum = bucket.getAggregations().get("sum");
        assertThat(sum, notNullValue());
        assertThat((long) sum.getValue(), equalTo(i + i + 1L));
        assertThat((double) propertiesKeys[i], equalTo((double) i));
        assertThat((long) propertiesDocCounts[i], equalTo(1L));
        assertThat((double) propertiesCounts[i], equalTo((double) i + i + 1L));
    }
}
Also used : Bucket(org.elasticsearch.search.aggregations.bucket.terms.Terms.Bucket) Terms(org.elasticsearch.search.aggregations.bucket.terms.Terms) Sum(org.elasticsearch.search.aggregations.metrics.sum.Sum) SearchResponse(org.elasticsearch.action.search.SearchResponse) ElasticsearchAssertions.assertSearchResponse(org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertSearchResponse)

Example 3 with Sum

use of org.elasticsearch.search.aggregations.metrics.sum.Sum in project elasticsearch by elastic.

the class LongTermsIT method testSingleValuedFieldWithSubAggregation.

public void testSingleValuedFieldWithSubAggregation() throws Exception {
    SearchResponse response = client().prepareSearch("idx").setTypes("type").addAggregation(terms("terms").field(SINGLE_VALUED_FIELD_NAME).collectMode(randomFrom(SubAggCollectionMode.values())).subAggregation(sum("sum").field(MULTI_VALUED_FIELD_NAME))).execute().actionGet();
    assertSearchResponse(response);
    Terms terms = response.getAggregations().get("terms");
    assertThat(terms, notNullValue());
    assertThat(terms.getName(), equalTo("terms"));
    assertThat(terms.getBuckets().size(), equalTo(5));
    Object[] propertiesKeys = (Object[]) terms.getProperty("_key");
    Object[] propertiesDocCounts = (Object[]) terms.getProperty("_count");
    Object[] propertiesCounts = (Object[]) terms.getProperty("sum.value");
    for (int i = 0; i < 5; i++) {
        Terms.Bucket bucket = terms.getBucketByKey("" + i);
        assertThat(bucket, notNullValue());
        assertThat(key(bucket), equalTo("" + i));
        assertThat(bucket.getKeyAsNumber().intValue(), equalTo(i));
        assertThat(bucket.getDocCount(), equalTo(1L));
        Sum sum = bucket.getAggregations().get("sum");
        assertThat(sum, notNullValue());
        assertThat((long) sum.getValue(), equalTo(i + i + 1L));
        assertThat((long) propertiesKeys[i], equalTo((long) i));
        assertThat((long) propertiesDocCounts[i], equalTo(1L));
        assertThat((double) propertiesCounts[i], equalTo((double) i + i + 1L));
    }
}
Also used : Bucket(org.elasticsearch.search.aggregations.bucket.terms.Terms.Bucket) Terms(org.elasticsearch.search.aggregations.bucket.terms.Terms) Sum(org.elasticsearch.search.aggregations.metrics.sum.Sum) SearchResponse(org.elasticsearch.action.search.SearchResponse) ElasticsearchAssertions.assertSearchResponse(org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertSearchResponse)

Example 4 with Sum

use of org.elasticsearch.search.aggregations.metrics.sum.Sum in project elasticsearch by elastic.

the class RangeIT method testSingleValuedFieldWithSubAggregation.

public void testSingleValuedFieldWithSubAggregation() throws Exception {
    SearchResponse response = client().prepareSearch("idx").addAggregation(range("range").field(SINGLE_VALUED_FIELD_NAME).addUnboundedTo(3).addRange(3, 6).addUnboundedFrom(6).subAggregation(sum("sum").field(SINGLE_VALUED_FIELD_NAME))).execute().actionGet();
    assertSearchResponse(response);
    Range range = response.getAggregations().get("range");
    assertThat(range, notNullValue());
    assertThat(range.getName(), equalTo("range"));
    List<? extends Bucket> buckets = range.getBuckets();
    assertThat(range.getBuckets().size(), equalTo(3));
    Object[] propertiesKeys = (Object[]) range.getProperty("_key");
    Object[] propertiesDocCounts = (Object[]) range.getProperty("_count");
    Object[] propertiesCounts = (Object[]) range.getProperty("sum.value");
    Range.Bucket bucket = buckets.get(0);
    assertThat(bucket, notNullValue());
    assertThat(bucket.getKey(), equalTo("*-3.0"));
    assertThat(((Number) bucket.getFrom()).doubleValue(), equalTo(Double.NEGATIVE_INFINITY));
    assertThat(((Number) bucket.getTo()).doubleValue(), equalTo(3.0));
    assertThat(bucket.getFromAsString(), nullValue());
    assertThat(bucket.getToAsString(), equalTo("3.0"));
    assertThat(bucket.getDocCount(), equalTo(2L));
    Sum sum = bucket.getAggregations().get("sum");
    assertThat(sum, notNullValue());
    // 1 + 2
    assertThat(sum.getValue(), equalTo(3.0));
    assertThat(propertiesKeys[0], equalTo("*-3.0"));
    assertThat(propertiesDocCounts[0], equalTo(2L));
    assertThat(propertiesCounts[0], equalTo(3.0));
    bucket = buckets.get(1);
    assertThat(bucket, notNullValue());
    assertThat(bucket.getKey(), equalTo("3.0-6.0"));
    assertThat(((Number) bucket.getFrom()).doubleValue(), equalTo(3.0));
    assertThat(((Number) bucket.getTo()).doubleValue(), equalTo(6.0));
    assertThat(bucket.getFromAsString(), equalTo("3.0"));
    assertThat(bucket.getToAsString(), equalTo("6.0"));
    assertThat(bucket.getDocCount(), equalTo(3L));
    sum = bucket.getAggregations().get("sum");
    assertThat(sum, notNullValue());
    // 3 + 4 + 5
    assertThat(sum.getValue(), equalTo(12.0));
    assertThat(propertiesKeys[1], equalTo("3.0-6.0"));
    assertThat(propertiesDocCounts[1], equalTo(3L));
    assertThat(propertiesCounts[1], equalTo(12.0));
    bucket = buckets.get(2);
    assertThat(bucket, notNullValue());
    assertThat(bucket.getKey(), equalTo("6.0-*"));
    assertThat(((Number) bucket.getFrom()).doubleValue(), equalTo(6.0));
    assertThat(((Number) bucket.getTo()).doubleValue(), equalTo(Double.POSITIVE_INFINITY));
    assertThat(bucket.getFromAsString(), equalTo("6.0"));
    assertThat(bucket.getToAsString(), nullValue());
    assertThat(bucket.getDocCount(), equalTo(numDocs - 5L));
    sum = bucket.getAggregations().get("sum");
    assertThat(sum, notNullValue());
    long total = 0;
    for (int i = 5; i < numDocs; ++i) {
        total += i + 1;
    }
    assertThat(sum.getValue(), equalTo((double) total));
    assertThat(propertiesKeys[2], equalTo("6.0-*"));
    assertThat(propertiesDocCounts[2], equalTo(numDocs - 5L));
    assertThat(propertiesCounts[2], equalTo((double) total));
}
Also used : Bucket(org.elasticsearch.search.aggregations.bucket.range.Range.Bucket) Sum(org.elasticsearch.search.aggregations.metrics.sum.Sum) Range(org.elasticsearch.search.aggregations.bucket.range.Range) SearchResponse(org.elasticsearch.action.search.SearchResponse) ElasticsearchAssertions.assertSearchResponse(org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertSearchResponse)

Example 5 with Sum

use of org.elasticsearch.search.aggregations.metrics.sum.Sum in project elasticsearch by elastic.

the class StringTermsIT method assertMultiSortResponse.

private void assertMultiSortResponse(String[] expectedKeys, Terms.Order... order) {
    SearchResponse response = client().prepareSearch("sort_idx").setTypes("multi_sort_type").addAggregation(terms("terms").executionHint(randomExecutionHint()).field(SINGLE_VALUED_FIELD_NAME).collectMode(randomFrom(SubAggCollectionMode.values())).order(Terms.Order.compound(order)).subAggregation(avg("avg_l").field("l")).subAggregation(sum("sum_d").field("d"))).execute().actionGet();
    assertSearchResponse(response);
    Terms terms = response.getAggregations().get("terms");
    assertThat(terms, notNullValue());
    assertThat(terms.getName(), equalTo("terms"));
    assertThat(terms.getBuckets().size(), equalTo(expectedKeys.length));
    int i = 0;
    for (Terms.Bucket bucket : terms.getBuckets()) {
        assertThat(bucket, notNullValue());
        assertThat(key(bucket), equalTo(expectedKeys[i]));
        assertThat(bucket.getDocCount(), equalTo(expectedMultiSortBuckets.get(expectedKeys[i]).get("_count")));
        Avg avg = bucket.getAggregations().get("avg_l");
        assertThat(avg, notNullValue());
        assertThat(avg.getValue(), equalTo(expectedMultiSortBuckets.get(expectedKeys[i]).get("avg_l")));
        Sum sum = bucket.getAggregations().get("sum_d");
        assertThat(sum, notNullValue());
        assertThat(sum.getValue(), equalTo(expectedMultiSortBuckets.get(expectedKeys[i]).get("sum_d")));
        i++;
    }
}
Also used : Bucket(org.elasticsearch.search.aggregations.bucket.terms.Terms.Bucket) Avg(org.elasticsearch.search.aggregations.metrics.avg.Avg) Terms(org.elasticsearch.search.aggregations.bucket.terms.Terms) Sum(org.elasticsearch.search.aggregations.metrics.sum.Sum) SearchResponse(org.elasticsearch.action.search.SearchResponse) ElasticsearchAssertions.assertSearchResponse(org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertSearchResponse)

Aggregations

Sum (org.elasticsearch.search.aggregations.metrics.sum.Sum)88 SearchResponse (org.elasticsearch.action.search.SearchResponse)84 ElasticsearchAssertions.assertSearchResponse (org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertSearchResponse)78 Histogram (org.elasticsearch.search.aggregations.bucket.histogram.Histogram)43 Bucket (org.elasticsearch.search.aggregations.bucket.histogram.Histogram.Bucket)38 Terms (org.elasticsearch.search.aggregations.bucket.terms.Terms)37 Script (org.elasticsearch.script.Script)26 ArrayList (java.util.ArrayList)16 HashMap (java.util.HashMap)9 PipelineAggregatorBuilders.bucketScript (org.elasticsearch.search.aggregations.pipeline.PipelineAggregatorBuilders.bucketScript)9 CompiledScript (org.elasticsearch.script.CompiledScript)8 ExecutableScript (org.elasticsearch.script.ExecutableScript)8 LeafSearchScript (org.elasticsearch.script.LeafSearchScript)8 SearchScript (org.elasticsearch.script.SearchScript)8 Bucket (org.elasticsearch.search.aggregations.bucket.terms.Terms.Bucket)8 InternalBucketMetricValue (org.elasticsearch.search.aggregations.pipeline.bucketmetrics.InternalBucketMetricValue)8 LinkedList (java.util.LinkedList)4 SearchRequestBuilder (org.elasticsearch.action.search.SearchRequestBuilder)4 BoolQueryBuilder (org.elasticsearch.index.query.BoolQueryBuilder)4 Range (org.elasticsearch.search.aggregations.bucket.range.Range)4