Skip to content

Commit ac9f5d1

Browse files
authored
Added support for average metric aggregation (#19559)
Signed-off-by: expani <[email protected]>
1 parent 958186c commit ac9f5d1

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

server/src/main/java/org/opensearch/search/aggregations/metrics/AvgAggregator.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
import org.opensearch.search.aggregations.InternalAggregation;
5252
import org.opensearch.search.aggregations.LeafBucketCollector;
5353
import org.opensearch.search.aggregations.LeafBucketCollectorBase;
54+
import org.opensearch.search.aggregations.ShardResultConvertor;
5455
import org.opensearch.search.aggregations.StarTreeBucketCollector;
5556
import org.opensearch.search.aggregations.StarTreePreComputeCollector;
5657
import org.opensearch.search.aggregations.support.ValuesSource;
@@ -59,6 +60,8 @@
5960
import org.opensearch.search.startree.StarTreeQueryHelper;
6061

6162
import java.io.IOException;
63+
import java.util.ArrayList;
64+
import java.util.List;
6265
import java.util.Map;
6366

6467
import static org.opensearch.search.startree.StarTreeQueryHelper.getStarTreeFilteredValues;
@@ -69,7 +72,7 @@
6972
*
7073
* @opensearch.internal
7174
*/
72-
class AvgAggregator extends NumericMetricsAggregator.SingleValue implements StarTreePreComputeCollector {
75+
class AvgAggregator extends NumericMetricsAggregator.SingleValue implements StarTreePreComputeCollector, ShardResultConvertor {
7376

7477
final ValuesSource.Numeric valuesSource;
7578

@@ -275,4 +278,15 @@ public void collectStarTreeEntry(int starTreeEntryBit, long bucket) throws IOExc
275278
}
276279
};
277280
}
281+
282+
@Override
283+
public List<InternalAggregation> convert(Map<String, Object[]> shardResult) {
284+
Object[] counts = shardResult.get(name + "_count");
285+
Object[] sums = shardResult.get(name + "_sum");
286+
List<InternalAggregation> results = new ArrayList<>(counts.length);
287+
for (int i = 0; i < counts.length; i++) {
288+
results.add(new InternalAvg(name, (Long) counts[i], (Long) sums[i], format, metadata()));
289+
}
290+
return results;
291+
}
278292
}

0 commit comments

Comments
 (0)