### 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
DisiWrapper top = filterIterators.top();
                        while (top.doc < doc) {
                            top.doc = top.approximation.advance(doc);
                            top = filterIterators.updateTop();
                        }
                        if (top.doc == doc) {
                            for (DisiWrapper w = filterIterators.topList(); w != null; w = w.next) {
                                
                                FilterMatchingDisiWrapper topMatch = (FilterMatchingDisiWrapper) w;
                                
                                
                                
                                if (topMatch.lastCheckedDoc < doc) {
                                    topMatch.lastCheckedDoc = doc;
                                    if (topMatch.twoPhaseView == null || topMatch.twoPhaseView.matches()) {
                                        topMatch.lastMatchingDoc = doc;
                                    }
                                }
                                if (topMatch.lastMatchingDoc == doc) {
                                    collectBucket(sub, doc, bucketOrd(bucket, topMatch.filterOrd));
                                    matched = true;
                                }
                            }
                        }
                    }
                    if (otherBucketKey != null && false == matched) {
                        collectBucket(sub, doc, bucketOrd(bucket, numFilters));
                    }
                }
                @Override