Downsampling is broken. Not sure why yet (likely caused by #97557). Invoking the downsample api results into:

```
org.elasticsearch.ElasticsearchSecurityException: no indices permissions found
        at org.elasticsearch.xpack.core.security.support.Exceptions.authorizationError(Exceptions.java:32) ~[?:?]
        at org.elasticsearch.xpack.core.security.authz.accesscontrol.SecurityIndexReaderWrapper.getIndicesAccessControl(SecurityIn
dexReaderWrapper.java:110) ~[?:?]
        at org.elasticsearch.xpack.core.security.authz.accesscontrol.SecurityIndexReaderWrapper.apply(SecurityIndexReaderWrapper.j
ava:76) ~[?:?]
        at org.elasticsearch.xpack.core.security.authz.accesscontrol.SecurityIndexReaderWrapper.apply(SecurityIndexReaderWrapper.j
ava:46) ~[?:?]
        at org.elasticsearch.index.shard.IndexShard.wrapSearcher(IndexShard.java:1590) ~[elasticsearch-8.11.0-SNAPSHOT.jar:?]
        at org.elasticsearch.index.shard.IndexShard.wrapSearcher(IndexShard.java:1561) ~[elasticsearch-8.11.0-SNAPSHOT.jar:?]
        at org.elasticsearch.index.engine.Engine$SearcherSupplier.acquireSearcher(Engine.java:1321) ~[elasticsearch-8.11.0-SNAPSHO
T.jar:?]
        at org.elasticsearch.index.engine.Engine.acquireSearcher(Engine.java:774) ~[elasticsearch-8.11.0-SNAPSHOT.jar:?]
        at org.elasticsearch.index.shard.IndexShard.acquireSearcher(IndexShard.java:1549) ~[elasticsearch-8.11.0-SNAPSHOT.jar:?]
        at org.elasticsearch.xpack.downsample.DownsampleShardIndexer.<init>(DownsampleShardIndexer.java:115) ~[?:?]
        at org.elasticsearch.xpack.downsample.DownsampleShardPersistentTaskExecutor.startDownsampleShardIndexer(DownsampleShardPersistentTaskExecutor.java:111) ~[?:?]
        at org.elasticsearch.xpack.downsample.DownsampleShardPersistentTaskExecutor$1.doRun(DownsampleShardPersistentTaskExecutor.java:87) ~[?:?]
        at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:983) ~[elasticsearch-8.11.0-SNAPSHOT.jar:?]
        at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:26) ~[elasticsearch-8.11.0-SNAPSHOT.jar:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[?:?]
        at java.lang.Thread.run(Thread.java:1623) ~[?:?]
```
x-pack/plugin/downsample/src/main/java/org/elasticsearch/xpack/downsample/DownsampleShardIndexer.java
private final DownsampleFieldSerializer[] groupedProducers;
        DownsampleBucketBuilder(AbstractDownsampleFieldProducer[] fieldProducers) {
            this.fieldProducers = fieldProducers;
            /*
             * The downsample field producers for aggregate_metric_double all share the same name (this is
             * the name they will be serialized in the target index). We group all field producers by
             * name. If grouping yields multiple downsample field producers, we delegate serialization to
             * the AggregateMetricFieldSerializer class.
             */
            groupedProducers = Arrays.stream(fieldProducers)
                .collect(groupingBy(AbstractDownsampleFieldProducer::name))
                .entrySet()
                .stream()
                .map(e -> {
                    if (e.getValue().size() == 1) {
                        return e.getValue().get(0);
                    } else {
                        return new AggregateMetricFieldSerializer(e.getKey(), e.getValue());
                    }
                })
                .toArray(DownsampleFieldSerializer[]::new);
        }
        /**
         * tsid changed, reset tsid and timestamp
         */
        public void resetTsid(BytesRef tsid, int tsidOrd, long timestamp) {
            this.tsid = BytesRef.deepCopyOf(tsid);
            this.tsidOrd = tsidOrd;
            resetTimestamp(timestamp);
        }