|
59 | 59 | import org.elasticsearch.script.mustache.SearchTemplateRequest;
|
60 | 60 | import org.elasticsearch.script.mustache.SearchTemplateResponse;
|
61 | 61 | import org.elasticsearch.search.SearchHit;
|
| 62 | +import org.elasticsearch.search.aggregations.AggregationBuilders; |
62 | 63 | import org.elasticsearch.search.aggregations.BucketOrder;
|
| 64 | +import org.elasticsearch.search.aggregations.bucket.composite.CompositeAggregation; |
| 65 | +import org.elasticsearch.search.aggregations.bucket.composite.CompositeValuesSourceBuilder; |
| 66 | +import org.elasticsearch.search.aggregations.bucket.composite.TermsValuesSourceBuilder; |
63 | 67 | import org.elasticsearch.search.aggregations.bucket.range.Range;
|
64 | 68 | import org.elasticsearch.search.aggregations.bucket.range.RangeAggregationBuilder;
|
65 | 69 | import org.elasticsearch.search.aggregations.bucket.terms.Terms;
|
@@ -275,6 +279,34 @@ public void testSearchWithTermsAgg() throws IOException {
|
275 | 279 | assertEquals(0, type2.getAggregations().asList().size());
|
276 | 280 | }
|
277 | 281 |
|
| 282 | + public void testSearchWithCompositeAgg() throws IOException { |
| 283 | + SearchRequest searchRequest = new SearchRequest(); |
| 284 | + SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); |
| 285 | + List<CompositeValuesSourceBuilder<?>> sources |
| 286 | + = Collections.singletonList(new TermsValuesSourceBuilder("terms").field("type.keyword").missingBucket(true).order("asc")); |
| 287 | + searchSourceBuilder.aggregation(AggregationBuilders.composite("composite", sources)); |
| 288 | + searchSourceBuilder.size(0); |
| 289 | + searchRequest.source(searchSourceBuilder); |
| 290 | + searchRequest.indices("index"); |
| 291 | + SearchResponse searchResponse = execute(searchRequest, highLevelClient()::search, highLevelClient()::searchAsync); |
| 292 | + assertSearchHeader(searchResponse); |
| 293 | + assertNull(searchResponse.getSuggest()); |
| 294 | + assertEquals(Collections.emptyMap(), searchResponse.getProfileResults()); |
| 295 | + assertEquals(0, searchResponse.getHits().getHits().length); |
| 296 | + assertEquals(Float.NaN, searchResponse.getHits().getMaxScore(), 0f); |
| 297 | + CompositeAggregation compositeAgg = searchResponse.getAggregations().get("composite"); |
| 298 | + assertEquals("composite", compositeAgg.getName()); |
| 299 | + assertEquals(2, compositeAgg.getBuckets().size()); |
| 300 | + CompositeAggregation.Bucket bucket1 = compositeAgg.getBuckets().get(0); |
| 301 | + assertEquals(3, bucket1.getDocCount()); |
| 302 | + assertEquals("{terms=type1}", bucket1.getKeyAsString()); |
| 303 | + assertEquals(0, bucket1.getAggregations().asList().size()); |
| 304 | + CompositeAggregation.Bucket bucket2 = compositeAgg.getBuckets().get(1); |
| 305 | + assertEquals(2, bucket2.getDocCount()); |
| 306 | + assertEquals("{terms=type2}", bucket2.getKeyAsString()); |
| 307 | + assertEquals(0, bucket2.getAggregations().asList().size()); |
| 308 | + } |
| 309 | + |
278 | 310 | public void testSearchWithRangeAgg() throws IOException {
|
279 | 311 | {
|
280 | 312 | SearchRequest searchRequest = new SearchRequest();
|
|
0 commit comments