diff --git a/CHANGELOG.md b/CHANGELOG.md index e19a0d0ed339e..35c3e91316298 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -165,6 +165,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Improve boolean parsing performance ([#11308](https://github.com/opensearch-project/OpenSearch/pull/11308)) - Interpret byte array as primitive using VarHandles ([#11362](https://github.com/opensearch-project/OpenSearch/pull/11362)) - Change error message when per shard document limit is breached ([#11312](https://github.com/opensearch-project/OpenSearch/pull/11312)) +- Apply the fast filter optimization to composite aggregation ([#11505](https://github.com/opensearch-project/OpenSearch/pull/11505)) ### Deprecated diff --git a/server/src/main/java/org/opensearch/search/aggregations/bucket/FilterRewriteHelper.java b/server/src/main/java/org/opensearch/search/aggregations/bucket/FilterRewriteHelper.java index e34d9e480cdac..804f179a0990e 100644 --- a/server/src/main/java/org/opensearch/search/aggregations/bucket/FilterRewriteHelper.java +++ b/server/src/main/java/org/opensearch/search/aggregations/bucket/FilterRewriteHelper.java @@ -248,7 +248,7 @@ public static class ValueSourceContext { * @param missing whether missing value/bucket is set * @param hasScript whether script is used * @param fieldType null if the field doesn't exist - * @param afterKey + * @param afterKey for composite aggregation, the key of the last bucket in the previous response */ public ValueSourceContext(boolean missing, boolean hasScript, MappedFieldType fieldType, long afterKey) { this.missing = missing; diff --git a/server/src/main/java/org/opensearch/search/aggregations/bucket/composite/CompositeAggregator.java b/server/src/main/java/org/opensearch/search/aggregations/bucket/composite/CompositeAggregator.java index 0fe61532a5de5..23e875645d344 100644 --- a/server/src/main/java/org/opensearch/search/aggregations/bucket/composite/CompositeAggregator.java +++ b/server/src/main/java/org/opensearch/search/aggregations/bucket/composite/CompositeAggregator.java @@ -602,7 +602,7 @@ public void collect(int doc, long bucket) throws IOException { try { long docCount = docCountProvider.getDocCount(doc); if (queue.addIfCompetitive(indexSortPrefix, docCount)) { - if (builder != null && lastDoc != doc) { // TODO reading how can lastDoc == doc? + if (builder != null && lastDoc != doc) { builder.add(doc); lastDoc = doc; }