diff --git a/server/src/main/java/org/opensearch/search/aggregations/bucket/terms/GlobalOrdinalsStringTermsAggregator.java b/server/src/main/java/org/opensearch/search/aggregations/bucket/terms/GlobalOrdinalsStringTermsAggregator.java index aa52a4b2d763b..d81a11c7cf7d3 100644 --- a/server/src/main/java/org/opensearch/search/aggregations/bucket/terms/GlobalOrdinalsStringTermsAggregator.java +++ b/server/src/main/java/org/opensearch/search/aggregations/bucket/terms/GlobalOrdinalsStringTermsAggregator.java @@ -170,21 +170,16 @@ LeafBucketCollector termDocFreqCollector( SortedSetDocValues globalOrds, BiConsumer ordCountConsumer ) throws IOException { - if (weight == null) { - // Calculate weight if not assigned previously - this.weight = context.searcher().createWeight(context.query(), ScoreMode.COMPLETE_NO_SCORES, 1f); + if (weight == null || weight.count(ctx) != ctx.reader().maxDoc()) { + // Weight not assigned or top-level query does not match all docs in the segment. + return null; } if (weight.count(ctx) == 0) { - // No documents matches top level query on this segment, we can skip it + // No documents matches top level query on this segment, we can skip the segment return LeafBucketCollector.NO_OP_COLLECTOR; } - if (weight.count(ctx) != ctx.reader().maxDoc()) { - // Top-level query does not match all docs in this segment. - return null; - } - Terms segmentTerms = ctx.reader().terms(this.fieldName); if (segmentTerms == null) { // Field is not indexed.