@@ -384,9 +384,28 @@ private class RollupBucketBuilder {
384
384
private long timestamp ;
385
385
private int docCount ;
386
386
private final List <AbstractDownsampleFieldProducer > rollupFieldProducers ;
387
+ private final List <DownsampleFieldSerializer > groupedProducers ;
387
388
388
389
RollupBucketBuilder (List <AbstractDownsampleFieldProducer > rollupFieldProducers ) {
389
390
this .rollupFieldProducers = rollupFieldProducers ;
391
+ /*
392
+ * The rollup field producers for aggregate_metric_double all share the same name (this is
393
+ * the name they will be serialized in the target index). We group all field producers by
394
+ * name. If grouping yields multiple rollup field producers, we delegate serialization to
395
+ * the AggregateMetricFieldSerializer class.
396
+ */
397
+ groupedProducers = rollupFieldProducers .stream ()
398
+ .collect (groupingBy (AbstractDownsampleFieldProducer ::name ))
399
+ .entrySet ()
400
+ .stream ()
401
+ .map (e -> {
402
+ if (e .getValue ().size () == 1 ) {
403
+ return e .getValue ().get (0 );
404
+ } else {
405
+ return new AggregateMetricFieldSerializer (e .getKey (), e .getValue ());
406
+ }
407
+ })
408
+ .toList ();
390
409
}
391
410
392
411
/**
@@ -435,25 +454,6 @@ public XContentBuilder buildRollupDocument() throws IOException {
435
454
builder .field ((String ) e .getKey (), e .getValue ());
436
455
}
437
456
438
- /*
439
- * The rollup field producers for aggregate_metric_double all share the same name (this is
440
- * the name they will be serialized in the target index). We group all field producers by
441
- * name. If grouping yields multiple rollup field producers, we delegate serialization to
442
- * the AggregateMetricFieldSerializer class.
443
- */
444
- List <DownsampleFieldSerializer > groupedProducers = rollupFieldProducers .stream ()
445
- .collect (groupingBy (AbstractDownsampleFieldProducer ::name ))
446
- .entrySet ()
447
- .stream ()
448
- .map (e -> {
449
- if (e .getValue ().size () == 1 ) {
450
- return e .getValue ().get (0 );
451
- } else {
452
- return new AggregateMetricFieldSerializer (e .getKey (), e .getValue ());
453
- }
454
- })
455
- .toList ();
456
-
457
457
// Serialize fields
458
458
for (DownsampleFieldSerializer fieldProducer : groupedProducers ) {
459
459
fieldProducer .write (builder );
0 commit comments