Skip to content

Commit f7a861c

Browse files
jtibshiranijimczi
authored andcommitted
For filters aggs, make sure that rewrites preserve other_bucket. (#32921)
1 parent 42e03c5 commit f7a861c

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

server/src/main/java/org/elasticsearch/search/aggregations/bucket/filter/FiltersAggregationBuilder.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,10 @@ protected AggregationBuilder doRewrite(QueryRewriteContext queryShardContext) th
209209
}
210210
}
211211
if (changed) {
212-
return new FiltersAggregationBuilder(getName(), rewrittenFilters, this.keyed);
212+
FiltersAggregationBuilder rewritten = new FiltersAggregationBuilder(getName(), rewrittenFilters, this.keyed);
213+
rewritten.otherBucket(otherBucket);
214+
rewritten.otherBucketKey(otherBucketKey);
215+
return rewritten;
213216
} else {
214217
return this;
215218
}

server/src/test/java/org/elasticsearch/search/aggregations/bucket/FiltersTests.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,4 +178,18 @@ public void testRewrite() throws IOException {
178178
assertSame(rewritten,
179179
rewritten.rewrite(new QueryRewriteContext(xContentRegistry(), null, null, () -> 0L)));
180180
}
181+
182+
public void testRewritePreservesOtherBucket() throws IOException {
183+
FiltersAggregationBuilder originalFilters = new FiltersAggregationBuilder("my-agg", new BoolQueryBuilder());
184+
originalFilters.otherBucket(randomBoolean());
185+
originalFilters.otherBucketKey(randomAlphaOfLength(10));
186+
187+
AggregationBuilder rewritten = originalFilters.rewrite(new QueryRewriteContext(xContentRegistry(),
188+
null, null, () -> 0L));
189+
assertThat(rewritten, instanceOf(FiltersAggregationBuilder.class));
190+
191+
FiltersAggregationBuilder rewrittenFilters = (FiltersAggregationBuilder) rewritten;
192+
assertEquals(originalFilters.otherBucket(), rewrittenFilters.otherBucket());
193+
assertEquals(originalFilters.otherBucketKey(), rewrittenFilters.otherBucketKey());
194+
}
181195
}

0 commit comments

Comments
 (0)