Search in sources :

Example 16 with Range

use of org.elasticsearch.search.aggregations.bucket.range.Range 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 17 with Range

use of org.elasticsearch.search.aggregations.bucket.range.Range in project elasticsearch by elastic.

the class RangeIT method testSingleValueFieldWithFormat.

public void testSingleValueFieldWithFormat() throws Exception {
    SearchResponse response = client().prepareSearch("idx").addAggregation(range("range").field(SINGLE_VALUED_FIELD_NAME).addUnboundedTo(3).addRange(3, 6).addUnboundedFrom(6).format("#")).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));
    Range.Bucket bucket = buckets.get(0);
    assertThat(bucket, notNullValue());
    assertThat(bucket.getKey(), equalTo("*-3"));
    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"));
    assertThat(bucket.getDocCount(), equalTo(2L));
    bucket = buckets.get(1);
    assertThat(bucket, notNullValue());
    assertThat(bucket.getKey(), equalTo("3-6"));
    assertThat(((Number) bucket.getFrom()).doubleValue(), equalTo(3.0));
    assertThat(((Number) bucket.getTo()).doubleValue(), equalTo(6.0));
    assertThat(bucket.getFromAsString(), equalTo("3"));
    assertThat(bucket.getToAsString(), equalTo("6"));
    assertThat(bucket.getDocCount(), equalTo(3L));
    bucket = buckets.get(2);
    assertThat(bucket, notNullValue());
    assertThat(bucket.getKey(), equalTo("6-*"));
    assertThat(((Number) bucket.getFrom()).doubleValue(), equalTo(6.0));
    assertThat(((Number) bucket.getTo()).doubleValue(), equalTo(Double.POSITIVE_INFINITY));
    assertThat(bucket.getFromAsString(), equalTo("6"));
    assertThat(bucket.getToAsString(), nullValue());
    assertThat(bucket.getDocCount(), equalTo(numDocs - 5L));
}
Also used : Bucket(org.elasticsearch.search.aggregations.bucket.range.Range.Bucket) Range(org.elasticsearch.search.aggregations.bucket.range.Range) SearchResponse(org.elasticsearch.action.search.SearchResponse) ElasticsearchAssertions.assertSearchResponse(org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertSearchResponse)

Example 18 with Range

use of org.elasticsearch.search.aggregations.bucket.range.Range in project elasticsearch by elastic.

the class ShardReduceIT method testRange.

public void testRange() throws Exception {
    SearchResponse response = client().prepareSearch("idx").setQuery(QueryBuilders.matchAllQuery()).addAggregation(range("range").field("value").addRange("r1", 0, 10).subAggregation(dateHistogram("histo").field("date").dateHistogramInterval(DateHistogramInterval.DAY).minDocCount(0))).execute().actionGet();
    assertSearchResponse(response);
    Range range = response.getAggregations().get("range");
    Histogram histo = range.getBuckets().get(0).getAggregations().get("histo");
    assertThat(histo.getBuckets().size(), equalTo(4));
}
Also used : Histogram(org.elasticsearch.search.aggregations.bucket.histogram.Histogram) AggregationBuilders.dateHistogram(org.elasticsearch.search.aggregations.AggregationBuilders.dateHistogram) Range(org.elasticsearch.search.aggregations.bucket.range.Range) AggregationBuilders.dateRange(org.elasticsearch.search.aggregations.AggregationBuilders.dateRange) AggregationBuilders.ipRange(org.elasticsearch.search.aggregations.AggregationBuilders.ipRange) SearchResponse(org.elasticsearch.action.search.SearchResponse) ElasticsearchAssertions.assertSearchResponse(org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertSearchResponse)

Example 19 with Range

use of org.elasticsearch.search.aggregations.bucket.range.Range in project elasticsearch by elastic.

the class ShardReduceIT method testDateRange.

public void testDateRange() throws Exception {
    SearchResponse response = client().prepareSearch("idx").setQuery(QueryBuilders.matchAllQuery()).addAggregation(dateRange("range").field("date").addRange("r1", "2014-01-01", "2014-01-10").subAggregation(dateHistogram("histo").field("date").dateHistogramInterval(DateHistogramInterval.DAY).minDocCount(0))).execute().actionGet();
    assertSearchResponse(response);
    Range range = response.getAggregations().get("range");
    Histogram histo = range.getBuckets().get(0).getAggregations().get("histo");
    assertThat(histo.getBuckets().size(), equalTo(4));
}
Also used : Histogram(org.elasticsearch.search.aggregations.bucket.histogram.Histogram) AggregationBuilders.dateHistogram(org.elasticsearch.search.aggregations.AggregationBuilders.dateHistogram) Range(org.elasticsearch.search.aggregations.bucket.range.Range) AggregationBuilders.dateRange(org.elasticsearch.search.aggregations.AggregationBuilders.dateRange) AggregationBuilders.ipRange(org.elasticsearch.search.aggregations.AggregationBuilders.ipRange) SearchResponse(org.elasticsearch.action.search.SearchResponse) ElasticsearchAssertions.assertSearchResponse(org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertSearchResponse)

Example 20 with Range

use of org.elasticsearch.search.aggregations.bucket.range.Range in project elasticsearch by elastic.

the class IpFieldBwCompatIT method testRangeAgg.

public void testRangeAgg() {
    SearchResponse response = client().prepareSearch("old_index", "new_index").addAggregation(AggregationBuilders.ipRange("ip_range").field("ip_field").addMaskRange("127.0.0.1/16").addMaskRange("::1/64")).get();
    assertNoFailures(response);
    assertEquals(3, response.getHits().getTotalHits());
    Range range = response.getAggregations().get("ip_range");
    assertEquals(2, range.getBuckets().size());
    assertEquals("::1/64", range.getBuckets().get(0).getKeyAsString());
    assertEquals(3, range.getBuckets().get(0).getDocCount());
    assertEquals("127.0.0.1/16", range.getBuckets().get(1).getKeyAsString());
    assertEquals(2, range.getBuckets().get(1).getDocCount());
}
Also used : Range(org.elasticsearch.search.aggregations.bucket.range.Range) SearchResponse(org.elasticsearch.action.search.SearchResponse)

Aggregations

SearchResponse (org.elasticsearch.action.search.SearchResponse)50 Range (org.elasticsearch.search.aggregations.bucket.range.Range)50 ElasticsearchAssertions.assertSearchResponse (org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertSearchResponse)48 Bucket (org.elasticsearch.search.aggregations.bucket.range.Range.Bucket)39 AggregationBuilders.dateRange (org.elasticsearch.search.aggregations.AggregationBuilders.dateRange)19 DateTime (org.joda.time.DateTime)13 Script (org.elasticsearch.script.Script)9 GeoPoint (org.elasticsearch.common.geo.GeoPoint)8 Histogram (org.elasticsearch.search.aggregations.bucket.histogram.Histogram)6 HashMap (java.util.HashMap)5 ArrayList (java.util.ArrayList)4 Sum (org.elasticsearch.search.aggregations.metrics.sum.Sum)4 AggregationBuilders.dateHistogram (org.elasticsearch.search.aggregations.AggregationBuilders.dateHistogram)3 AggregationBuilders.ipRange (org.elasticsearch.search.aggregations.AggregationBuilders.ipRange)3 SearchRequestBuilder (org.elasticsearch.action.search.SearchRequestBuilder)2 Filter (org.elasticsearch.search.aggregations.bucket.filter.Filter)2 Terms (org.elasticsearch.search.aggregations.bucket.terms.Terms)2 HashSet (java.util.HashSet)1 XContentBuilder (org.elasticsearch.common.xcontent.XContentBuilder)1 RangeQueryBuilder (org.elasticsearch.index.query.RangeQueryBuilder)1