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
import org.elasticsearch.search.aggregations.support.TimeSeriesIndexSearcher;
import org.elasticsearch.tasks.TaskCancelledException;
import org.elasticsearch.xcontent.XContentBuilder;
import org.elasticsearch.xcontent.XContentFactory;
import org.elasticsearch.xcontent.XContentType;
import org.elasticsearch.xpack.core.downsample.DownsampleAfterBulkInfo;
import org.elasticsearch.xpack.core.downsample.DownsampleBeforeBulkInfo;
import org.elasticsearch.xpack.core.downsample.DownsampleIndexerAction;
import org.elasticsearch.xpack.core.downsample.DownsampleShardIndexerStatus;
import org.elasticsearch.xpack.core.downsample.DownsampleShardPersistentTaskState;
import org.elasticsearch.xpack.core.downsample.DownsampleShardTask;
import java.io.Closeable;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
import static java.util.stream.Collectors.groupingBy;
import static org.elasticsearch.core.Strings.format;
/**
 * An indexer for downsampling that iterates documents collected by {@link TimeSeriesIndexSearcher},
 * computes the downsample buckets and stores the buckets in the downsampled index.
 * <p>
 * The documents collected by the {@link TimeSeriesIndexSearcher} are expected to be sorted
 * by _tsid in ascending order and @timestamp in descending order.
 */
class DownsampleShardIndexer {