From 0e5f9898d16e19607c11cca56172dd11f57bb67a Mon Sep 17 00:00:00 2001 From: Colin Goodheart-Smithe Date: Thu, 10 Jul 2014 16:11:21 +0100 Subject: [PATCH] Aggregations: DateHistogramBuilder accepts String preOffset and postOffset This is what DateHistogramParser expects so will enable the builder to build valid requests using these variables. Also added tests for preOffset and postOffset since these tests did not exist Closes #5586 --- .../histogram/DateHistogramBuilder.java | 12 ++-- .../bucket/DateHistogramTests.java | 70 +++++++++++++++++++ 2 files changed, 76 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/DateHistogramBuilder.java b/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/DateHistogramBuilder.java index 62dfce2409b..94e75d76cdd 100644 --- a/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/DateHistogramBuilder.java +++ b/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/DateHistogramBuilder.java @@ -41,8 +41,8 @@ public class DateHistogramBuilder extends ValuesSourceAggregationBuilder buckets = histo.getBuckets(); + assertThat(buckets.size(), equalTo(2)); + + DateHistogram.Bucket bucket = histo.getBucketByKey("2014-03-10"); + assertThat(bucket, Matchers.notNullValue()); + assertThat(bucket.getDocCount(), equalTo(2l)); + + bucket = histo.getBucketByKey("2014-03-11"); + assertThat(bucket, Matchers.notNullValue()); + assertThat(bucket.getDocCount(), equalTo(3l)); + } + + @Test + public void singleValue_WithPostOffset() throws Exception { + prepareCreate("idx2").addMapping("type", "date", "type=date").execute().actionGet(); + IndexRequestBuilder[] reqs = new IndexRequestBuilder[5]; + DateTime date = date("2014-03-11T00:00:00+00:00"); + for (int i = 0; i < reqs.length; i++) { + reqs[i] = client().prepareIndex("idx2", "type", "" + i).setSource(jsonBuilder().startObject().field("date", date).endObject()); + date = date.plusHours(6); + } + indexRandom(true, reqs); + + SearchResponse response = client().prepareSearch("idx2") + .setQuery(matchAllQuery()) + .addAggregation(dateHistogram("date_histo") + .field("date") + .postOffset("2d") + .interval(DateHistogram.Interval.DAY) + .format("yyyy-MM-dd")) + .execute().actionGet(); + + assertThat(response.getHits().getTotalHits(), equalTo(5l)); + + DateHistogram histo = response.getAggregations().get("date_histo"); + Collection buckets = histo.getBuckets(); + assertThat(buckets.size(), equalTo(2)); + + DateHistogram.Bucket bucket = histo.getBucketByKey("2014-03-13"); + assertThat(bucket, Matchers.notNullValue()); + assertThat(bucket.getDocCount(), equalTo(4l)); + + bucket = histo.getBucketByKey("2014-03-14"); + assertThat(bucket, Matchers.notNullValue()); + assertThat(bucket.getDocCount(), equalTo(1l)); + } + @Test public void singleValue_WithPreZone_WithAadjustLargeInterval() throws Exception { prepareCreate("idx2").addMapping("type", "date", "type=date").execute().actionGet();