Search in sources :

Example 11 with Range

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

the class GeoDistanceIT method testSimple.

public void testSimple() throws Exception {
    SearchResponse response = client().prepareSearch("idx").addAggregation(geoDistance("amsterdam_rings", new GeoPoint(52.3760, 4.894)).field("location").unit(DistanceUnit.KILOMETERS).addUnboundedTo(500).addRange(500, 1000).addUnboundedFrom(1000)).execute().actionGet();
    assertSearchResponse(response);
    Range geoDist = response.getAggregations().get("amsterdam_rings");
    assertThat(geoDist, notNullValue());
    assertThat(geoDist.getName(), equalTo("amsterdam_rings"));
    List<? extends Bucket> buckets = geoDist.getBuckets();
    assertThat(buckets.size(), equalTo(3));
    Range.Bucket bucket = buckets.get(0);
    assertThat(bucket, notNullValue());
    assertThat((String) bucket.getKey(), equalTo("*-500.0"));
    assertThat(((Number) bucket.getFrom()).doubleValue(), equalTo(0.0));
    assertThat(((Number) bucket.getTo()).doubleValue(), equalTo(500.0));
    assertThat(bucket.getFromAsString(), equalTo("0.0"));
    assertThat(bucket.getToAsString(), equalTo("500.0"));
    assertThat(bucket.getDocCount(), equalTo(2L));
    bucket = buckets.get(1);
    assertThat(bucket, notNullValue());
    assertThat((String) bucket.getKey(), equalTo("500.0-1000.0"));
    assertThat(((Number) bucket.getFrom()).doubleValue(), equalTo(500.0));
    assertThat(((Number) bucket.getTo()).doubleValue(), equalTo(1000.0));
    assertThat(bucket.getFromAsString(), equalTo("500.0"));
    assertThat(bucket.getToAsString(), equalTo("1000.0"));
    assertThat(bucket.getDocCount(), equalTo(2L));
    bucket = buckets.get(2);
    assertThat(bucket, notNullValue());
    assertThat((String) bucket.getKey(), equalTo("1000.0-*"));
    assertThat(((Number) bucket.getFrom()).doubleValue(), equalTo(1000.0));
    assertThat(((Number) bucket.getTo()).doubleValue(), equalTo(Double.POSITIVE_INFINITY));
    assertThat(bucket.getFromAsString(), equalTo("1000.0"));
    assertThat(bucket.getToAsString(), nullValue());
    assertThat(bucket.getDocCount(), equalTo(1L));
}
Also used : GeoPoint(org.elasticsearch.common.geo.GeoPoint) 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 12 with Range

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

the class IpRangeIT method testUnmapped.

public void testUnmapped() {
    SearchResponse rsp = client().prepareSearch("idx_unmapped").addAggregation(AggregationBuilders.ipRange("my_range").field("ip").addUnboundedTo("192.168.1.0").addRange("192.168.1.0", "192.168.1.10").addUnboundedFrom("192.168.1.10")).get();
    assertSearchResponse(rsp);
    Range range = rsp.getAggregations().get("my_range");
    assertEquals(3, range.getBuckets().size());
    Range.Bucket bucket1 = range.getBuckets().get(0);
    assertNull(bucket1.getFrom());
    assertEquals("192.168.1.0", bucket1.getTo());
    assertEquals(0, bucket1.getDocCount());
    Range.Bucket bucket2 = range.getBuckets().get(1);
    assertEquals("192.168.1.0", bucket2.getFrom());
    assertEquals("192.168.1.10", bucket2.getTo());
    assertEquals(0, bucket2.getDocCount());
    Range.Bucket bucket3 = range.getBuckets().get(2);
    assertEquals("192.168.1.10", bucket3.getFrom());
    assertNull(bucket3.getTo());
    assertEquals(0, bucket3.getDocCount());
}
Also used : Range(org.elasticsearch.search.aggregations.bucket.range.Range) SearchResponse(org.elasticsearch.action.search.SearchResponse) ElasticsearchAssertions.assertSearchResponse(org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertSearchResponse)

Example 13 with Range

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

the class RangeIT method testRangeAsSubAggregation.

public void testRangeAsSubAggregation() throws Exception {
    SearchResponse response = client().prepareSearch("idx").addAggregation(terms("terms").field(MULTI_VALUED_FIELD_NAME).size(100).collectMode(randomFrom(SubAggCollectionMode.values())).subAggregation(range("range").field(SINGLE_VALUED_FIELD_NAME).addUnboundedTo(3).addRange(3, 6).addUnboundedFrom(6))).execute().actionGet();
    assertSearchResponse(response);
    Terms terms = response.getAggregations().get("terms");
    assertThat(terms, notNullValue());
    assertThat(terms.getBuckets().size(), equalTo(numDocs + 1));
    for (int i = 1; i < numDocs + 2; ++i) {
        Terms.Bucket bucket = terms.getBucketByKey("" + i);
        assertThat(bucket, notNullValue());
        final long docCount = i == 1 || i == numDocs + 1 ? 1 : 2;
        assertThat(bucket.getDocCount(), equalTo(docCount));
        Range range = bucket.getAggregations().get("range");
        List<? extends Bucket> buckets = range.getBuckets();
        Range.Bucket rangeBucket = buckets.get(0);
        assertThat(rangeBucket.getKey(), equalTo("*-3.0"));
        assertThat(rangeBucket.getKeyAsString(), equalTo("*-3.0"));
        assertThat(rangeBucket, notNullValue());
        assertThat(rangeBucket.getFromAsString(), nullValue());
        assertThat(rangeBucket.getToAsString(), equalTo("3.0"));
        if (i == 1 || i == 3) {
            assertThat(rangeBucket.getDocCount(), equalTo(1L));
        } else if (i == 2) {
            assertThat(rangeBucket.getDocCount(), equalTo(2L));
        } else {
            assertThat(rangeBucket.getDocCount(), equalTo(0L));
        }
        rangeBucket = buckets.get(1);
        assertThat(rangeBucket.getKey(), equalTo("3.0-6.0"));
        assertThat(rangeBucket.getKeyAsString(), equalTo("3.0-6.0"));
        assertThat(rangeBucket, notNullValue());
        assertThat(rangeBucket.getFromAsString(), equalTo("3.0"));
        assertThat(rangeBucket.getToAsString(), equalTo("6.0"));
        if (i == 3 || i == 6) {
            assertThat(rangeBucket.getDocCount(), equalTo(1L));
        } else if (i == 4 || i == 5) {
            assertThat(rangeBucket.getDocCount(), equalTo(2L));
        } else {
            assertThat(rangeBucket.getDocCount(), equalTo(0L));
        }
        rangeBucket = buckets.get(2);
        assertThat(rangeBucket.getKey(), equalTo("6.0-*"));
        assertThat(rangeBucket.getKeyAsString(), equalTo("6.0-*"));
        assertThat(rangeBucket, notNullValue());
        assertThat(rangeBucket.getFromAsString(), equalTo("6.0"));
        assertThat(rangeBucket.getToAsString(), nullValue());
        if (i == 6 || i == numDocs + 1) {
            assertThat(rangeBucket.getDocCount(), equalTo(1L));
        } else if (i < 6) {
            assertThat(rangeBucket.getDocCount(), equalTo(0L));
        } else {
            assertThat(rangeBucket.getDocCount(), equalTo(2L));
        }
    }
}
Also used : Bucket(org.elasticsearch.search.aggregations.bucket.range.Range.Bucket) Terms(org.elasticsearch.search.aggregations.bucket.terms.Terms) Range(org.elasticsearch.search.aggregations.bucket.range.Range) SearchResponse(org.elasticsearch.action.search.SearchResponse) ElasticsearchAssertions.assertSearchResponse(org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertSearchResponse)

Example 14 with Range

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

the class RangeIT method testMultiValuedField.

/*
    [1, 2]
    [2, 3]
    [3, 4]
    [4, 5]
    [5, 6]
    [6, 7]
    [7, 8j
    [8, 9]
    [9, 10]
    [10, 11]
     */
public void testMultiValuedField() throws Exception {
    SearchResponse response = client().prepareSearch("idx").addAggregation(range("range").field(MULTI_VALUED_FIELD_NAME).addUnboundedTo(3).addRange(3, 6).addUnboundedFrom(6)).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.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));
    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(4L));
    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 - 4L));
}
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 15 with Range

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

the class RangeIT method testScriptSingleValue.

/*
    [2, 3]
    [3, 4]
    [4, 5]
    [5, 6]
    [6, 7]
    [7, 8j
    [8, 9]
    [9, 10]
    [10, 11]
    [11, 12]

    r1: 2
    r2: 3, 3, 4, 4, 5, 5
    r3: 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12
     */
public void testScriptSingleValue() throws Exception {
    Script script = new Script(ScriptType.INLINE, CustomScriptPlugin.NAME, "doc['" + SINGLE_VALUED_FIELD_NAME + "'].value", Collections.emptyMap());
    SearchResponse response = client().prepareSearch("idx").addAggregation(range("range").script(script).addUnboundedTo(3).addRange(3, 6).addUnboundedFrom(6)).get();
    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.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));
    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));
    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));
}
Also used : Script(org.elasticsearch.script.Script) 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)

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