Search in sources :

Example 6 with Range

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

the class DateRangeIT method testDateMath.

public void testDateMath() throws Exception {
    Map<String, Object> params = new HashMap<>();
    params.put("fieldname", "date");
    DateRangeAggregationBuilder rangeBuilder = dateRange("range");
    if (randomBoolean()) {
        rangeBuilder.field("date");
    } else {
        rangeBuilder.script(new Script(ScriptType.INLINE, "native", DateScriptMocks.ExtractFieldScript.NAME, params));
    }
    SearchResponse response = client().prepareSearch("idx").addAggregation(rangeBuilder.addUnboundedTo("a long time ago", "now-50y").addRange("recently", "now-50y", "now-1y").addUnboundedFrom("last year", "now-1y").timeZone(DateTimeZone.forID("EST"))).execute().actionGet();
    assertSearchResponse(response);
    Range range = response.getAggregations().get("range");
    assertThat(range, notNullValue());
    assertThat(range.getName(), equalTo("range"));
    assertThat(range.getBuckets().size(), equalTo(3));
    // TODO: use diamond once JI-9019884 is fixed
    List<Range.Bucket> buckets = new ArrayList<>(range.getBuckets());
    Range.Bucket bucket = buckets.get(0);
    assertThat((String) bucket.getKey(), equalTo("a long time ago"));
    assertThat(bucket.getKeyAsString(), equalTo("a long time ago"));
    assertThat(bucket.getDocCount(), equalTo(0L));
    bucket = buckets.get(1);
    assertThat((String) bucket.getKey(), equalTo("recently"));
    assertThat(bucket.getKeyAsString(), equalTo("recently"));
    assertThat(bucket.getDocCount(), equalTo((long) numDocs));
    bucket = buckets.get(2);
    assertThat((String) bucket.getKey(), equalTo("last year"));
    assertThat(bucket.getKeyAsString(), equalTo("last year"));
    assertThat(bucket.getDocCount(), equalTo(0L));
}
Also used : DateRangeAggregationBuilder(org.elasticsearch.search.aggregations.bucket.range.date.DateRangeAggregationBuilder) Script(org.elasticsearch.script.Script) Bucket(org.elasticsearch.search.aggregations.bucket.range.Range.Bucket) HashMap(java.util.HashMap) Bucket(org.elasticsearch.search.aggregations.bucket.range.Range.Bucket) ArrayList(java.util.ArrayList) Range(org.elasticsearch.search.aggregations.bucket.range.Range) AggregationBuilders.dateRange(org.elasticsearch.search.aggregations.AggregationBuilders.dateRange) SearchResponse(org.elasticsearch.action.search.SearchResponse) ElasticsearchAssertions.assertSearchResponse(org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertSearchResponse)

Example 7 with Range

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

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

the class DateRangeIT method testSingleValueFieldWithCustomKey.

public void testSingleValueFieldWithCustomKey() 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))).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));
    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));
    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));
    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));
}
Also used : Bucket(org.elasticsearch.search.aggregations.bucket.range.Range.Bucket) 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 9 with Range

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

the class DateRangeIT method testMultiValuedField.

/*
        Jan 2,  Feb 3,      1
        Feb 2,  Mar 3,      2
        Feb 15, Mar 16,     3
        Mar 2,  Apr 3,      4
        Mar 15, Apr 16      5
        Mar 23, Apr 24      6
     */
public void testMultiValuedField() throws Exception {
    SearchResponse response = client().prepareSearch("idx").addAggregation(dateRange("range").field("dates").addUnboundedTo(date(2, 15)).addRange(date(2, 15), date(3, 15)).addUnboundedFrom(date(3, 15))).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));
    Range.Bucket bucket = buckets.get(0);
    assertThat(bucket, notNullValue());
    assertThat((String) bucket.getKey(), equalTo("*-2012-02-15T00:00:00.000Z"));
    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));
    bucket = buckets.get(1);
    assertThat(bucket, notNullValue());
    assertThat((String) bucket.getKey(), equalTo("2012-02-15T00:00:00.000Z-2012-03-15T00:00:00.000Z"));
    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(3L));
    bucket = buckets.get(2);
    assertThat(bucket, notNullValue());
    assertThat((String) bucket.getKey(), equalTo("2012-03-15T00:00:00.000Z-*"));
    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 - 2L));
}
Also used : Bucket(org.elasticsearch.search.aggregations.bucket.range.Range.Bucket) 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 10 with Range

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

the class GeoDistanceIT method testUnmapped.

public void testUnmapped() throws Exception {
    client().admin().cluster().prepareHealth("idx_unmapped").setWaitForYellowStatus().execute().actionGet();
    SearchResponse response = client().prepareSearch("idx_unmapped").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(geoDist.getBuckets().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(0L));
    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(0L));
    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(0L));
}
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)

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