|
84 | 84 | import org.opensearch.search.aggregations.bucket.composite.CompositeAggregation; |
85 | 85 | import org.opensearch.search.aggregations.bucket.composite.CompositeValuesSourceBuilder; |
86 | 86 | import org.opensearch.search.aggregations.bucket.composite.TermsValuesSourceBuilder; |
| 87 | +import org.opensearch.search.aggregations.bucket.histogram.DateHistogramAggregationBuilder; |
| 88 | +import org.opensearch.search.aggregations.bucket.histogram.DateHistogramInterval; |
| 89 | +import org.opensearch.search.aggregations.bucket.histogram.ParsedDateHistogram; |
87 | 90 | import org.opensearch.search.aggregations.bucket.range.Range; |
88 | 91 | import org.opensearch.search.aggregations.bucket.range.RangeAggregationBuilder; |
89 | 92 | import org.opensearch.search.aggregations.bucket.terms.MultiTermsAggregationBuilder; |
@@ -237,6 +240,32 @@ public void indexDocuments() throws IOException { |
237 | 240 | client().performRequest(createFilteredAlias); |
238 | 241 | } |
239 | 242 |
|
| 243 | + { |
| 244 | + Request create = new Request(HttpPut.METHOD_NAME, "/index5"); |
| 245 | + create.setJsonEntity( |
| 246 | + "{" |
| 247 | + + " \"mappings\": {" |
| 248 | + + " \"properties\": {" |
| 249 | + + " \"date_created\": {" |
| 250 | + + " \"type\": \"date\"" |
| 251 | + + " }," |
| 252 | + + " \"distribution\": {" |
| 253 | + + " \"properties\": {" |
| 254 | + + " \"number_events\": {" |
| 255 | + + " \"type\": \"unsigned_long\"" |
| 256 | + + " }" |
| 257 | + + " }" |
| 258 | + + " }" |
| 259 | + + " }" |
| 260 | + + " }" |
| 261 | + + "}" |
| 262 | + ); |
| 263 | + client().performRequest(create); |
| 264 | + Request doc1 = new Request(HttpPut.METHOD_NAME, "/index5/_doc/1"); |
| 265 | + doc1.setJsonEntity("{\"date_created\":\"2024\", \"distribution\":{\"number_events\": 1000000}}"); |
| 266 | + client().performRequest(doc1); |
| 267 | + } |
| 268 | + |
240 | 269 | client().performRequest(new Request(HttpPost.METHOD_NAME, "/_refresh")); |
241 | 270 | } |
242 | 271 |
|
@@ -514,6 +543,38 @@ public void testSearchWithTermsAndRangeAgg() throws IOException { |
514 | 543 | } |
515 | 544 | } |
516 | 545 |
|
| 546 | + public void testSearchWithDateAndRangeAgg() throws IOException { |
| 547 | + SearchRequest searchRequest = new SearchRequest("index5"); |
| 548 | + SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); |
| 549 | + DateHistogramAggregationBuilder yearAgg = new DateHistogramAggregationBuilder("year").field("date_created") |
| 550 | + .calendarInterval(DateHistogramInterval.YEAR) |
| 551 | + .format("yyyy"); |
| 552 | + |
| 553 | + RangeAggregationBuilder rangeAgg = new RangeAggregationBuilder("number_events").field("distribution.number_events") |
| 554 | + .addRange("0--999", 0.0, 1000.0) |
| 555 | + .addRange("999--", 1000.0, 10_000_000_000_00L); |
| 556 | + searchSourceBuilder.aggregation(yearAgg).aggregation(rangeAgg); |
| 557 | + searchSourceBuilder.size(0); |
| 558 | + searchRequest.source(searchSourceBuilder); |
| 559 | + SearchResponse searchResponse = execute(searchRequest, highLevelClient()::search, highLevelClient()::searchAsync); |
| 560 | + assertSearchHeader(searchResponse); |
| 561 | + ParsedDateHistogram yearHistogram = searchResponse.getAggregations().get("year"); |
| 562 | + assertEquals(1, yearHistogram.getBuckets().size()); |
| 563 | + assertEquals("2024", yearHistogram.getBuckets().get(0).getKeyAsString()); |
| 564 | + Range rangeAggregation = searchResponse.getAggregations().get("number_events"); |
| 565 | + assertEquals(2, rangeAggregation.getBuckets().size()); |
| 566 | + { |
| 567 | + Range.Bucket bucket = rangeAggregation.getBuckets().get(0); |
| 568 | + assertEquals("0--999", bucket.getKeyAsString()); |
| 569 | + assertEquals(0, bucket.getDocCount()); |
| 570 | + } |
| 571 | + { |
| 572 | + Range.Bucket bucket = rangeAggregation.getBuckets().get(1); |
| 573 | + assertEquals("999--", bucket.getKeyAsString()); |
| 574 | + assertEquals(1, bucket.getDocCount()); |
| 575 | + } |
| 576 | + } |
| 577 | + |
517 | 578 | public void testSearchWithTermsAndWeightedAvg() throws IOException { |
518 | 579 | SearchRequest searchRequest = new SearchRequest("index"); |
519 | 580 | SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); |
|
0 commit comments