### Description

Min/Max aggregations do not require any scaling for the random_sampler results. Additionally, if the min/max an be determined via the pointReader (i.e. not by individual doc values), we should use that as it means that sampler doesn't need to supply documents to the min/max agg, potentially speeding things up significantly and improving accuracy.

related to: https://github.com/elastic/elasticsearch/issues/84353
server/src/main/java/org/elasticsearch/search/aggregations/AggregatorBase.java
*/
    @Override
    public final LeafBucketCollector getLeafCollector(AggregationExecutionContext aggCtx) throws IOException {
        preGetSubLeafCollectors(aggCtx.getLeafReaderContext());
        final LeafBucketCollector sub = collectableSubAggregators.getLeafCollector(aggCtx);
        return getLeafCollector(aggCtx.getLeafReaderContext(), sub, aggCtx);
    }
    /**
     * Can be overridden by aggregator implementations that like the perform an operation before the leaf collectors
     * of children aggregators are instantiated for the next segment.
     */
    protected void preGetSubLeafCollectors(LeafReaderContext ctx) throws IOException {}
    /**
     * Can be overridden by aggregator implementation to be called back when the collection phase starts.
     */
    protected void doPreCollection() throws IOException {}
    @Override
    public final void preCollection() throws IOException {
        collectableSubAggregators = MultiBucketCollector.wrap(false, Arrays.asList(subAggregators));
        doPreCollection();
        collectableSubAggregators.preCollection();
    }
    /**
     * @return  The name of the aggregation.
     */
    @Override
    public String name() {
        return name;
    }
    /**