Skip to content

Commit e260108

Browse files
committed
add weight.count optimization for no match
Signed-off-by: Sandesh Kumar <[email protected]>
1 parent b0417f3 commit e260108

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

server/src/main/java/org/opensearch/search/aggregations/bucket/composite/CompositeAggregator.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@
7676
import org.opensearch.search.aggregations.bucket.filterrewrite.CompositeAggregatorBridge;
7777
import org.opensearch.search.aggregations.bucket.filterrewrite.FilterRewriteOptimizationContext;
7878
import org.opensearch.search.aggregations.bucket.missing.MissingOrder;
79+
import org.opensearch.search.aggregations.bucket.terms.GlobalOrdinalsStringTermsAggregator;
7980
import org.opensearch.search.aggregations.bucket.terms.LongKeyedBucketOrds;
8081
import org.opensearch.search.internal.SearchContext;
8182
import org.opensearch.search.searchafter.SearchAfterBuilder;
@@ -119,6 +120,7 @@ public final class CompositeAggregator extends BucketsAggregator {
119120
private BucketCollector deferredCollectors;
120121

121122
private boolean earlyTerminated;
123+
private Weight weight;
122124

123125
private final FilterRewriteOptimizationContext filterRewriteOptimizationContext;
124126
private LongKeyedBucketOrds bucketOrds;
@@ -566,9 +568,15 @@ private void processLeafFromQuery(LeafReaderContext ctx, Sort indexSortPrefix) t
566568
}
567569
}
568570
}
571+
public void setWeight(Weight weight) {
572+
this.weight = weight;
573+
}
569574

570575
@Override
571576
protected boolean tryPrecomputeAggregationForLeaf(LeafReaderContext ctx) throws IOException {
577+
if (this.weight != null && this.weight.count(ctx) == 0) {
578+
return true;
579+
}
572580
finishLeaf(); // May need to wrap up previous leaf if it could not be precomputed
573581
return filterRewriteOptimizationContext.tryOptimize(
574582
ctx,

0 commit comments

Comments
 (0)