### Description

Follow-up of #98360: when there is a single filter, the collector could save the overhead of the priority queue (both in `collect()` and `competitiveIterator()`), which would likely result in a speedup.
server/src/main/java/org/elasticsearch/search/aggregations/bucket/filter/FiltersAggregator.java
protected LeafBucketCollector getLeafCollector(AggregationExecutionContext aggCtx, LeafBucketCollector sub) throws IOException {
            if (QueryToFilterAdapter.matchesNoDocs(filters()) && otherBucketKey == null) {
                return LeafBucketCollector.NO_OP_COLLECTOR;
            }
            final int numFilters = filters().size();
            
            final DisiPriorityQueue filterIterators = new DisiPriorityQueue(numFilters);
            long totalCost = 0;
            for (int filterOrd = 0; filterOrd < numFilters; filterOrd++) {
                Scorer randomAccessScorer = filters().get(filterOrd).randomAccessScorer(aggCtx.getLeafReaderContext());
                if (randomAccessScorer == null) {
                    continue;
                }
                FilterMatchingDisiWrapper w = new FilterMatchingDisiWrapper(randomAccessScorer, filterOrd);
                totalCost += randomAccessScorer.iterator().cost();
                filterIterators.add(w);
            }
            
            
            
            final boolean useCompetitiveIterator = (parent == null
                && otherBucketKey == null
                && filterIterators.size() > 0
                && totalCost < aggCtx.getLeafReaderContext().reader().maxDoc());
            return new LeafBucketCollectorBase(sub, null) {
                @Override
                public void collect(int doc, long bucket) throws IOException {
                    boolean matched = false;
                    if (filterIterators.size() > 0) {