Skip to content

Commit 9dbf259

Browse files
author
Peter Alfonsi
committed
Address comments
Signed-off-by: Peter Alfonsi <petealft@amazon.com>
1 parent 7d1b471 commit 9dbf259

File tree

6 files changed

+17
-17
lines changed

6 files changed

+17
-17
lines changed

server/src/main/java/org/opensearch/index/query/BoolQueryBuilder.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -485,22 +485,22 @@ private boolean rewriteMustNotRangeClausesToShould(BoolQueryBuilder newBuilder,
485485
QueryShardContext shardContext = getQueryShardContext(queryRewriteContext);
486486

487487
boolean changed = false;
488-
// For now, only handle the case where there's exactly 1 range query for this field.
488+
// For now, only handle the case where there's exactly 1 complement-aware query for this field.
489489
Map<String, Integer> fieldCounts = new HashMap<>();
490490
Set<ComplementAwareQueryBuilder> complementAwareQueries = new HashSet<>();
491491
for (QueryBuilder clause : mustNotClauses) {
492-
if (clause instanceof ComplementAwareQueryBuilder caq) {
493-
fieldCounts.merge(caq.fieldName(), 1, Integer::sum);
494-
complementAwareQueries.add(caq);
492+
if (clause instanceof ComplementAwareQueryBuilder && clause instanceof WithFieldName wfn) {
493+
fieldCounts.merge(wfn.fieldName(), 1, Integer::sum);
494+
complementAwareQueries.add((ComplementAwareQueryBuilder) wfn);
495495
}
496496
}
497497

498498
for (ComplementAwareQueryBuilder caq : complementAwareQueries) {
499-
String fieldName = caq.fieldName();
499+
String fieldName = ((WithFieldName) caq).fieldName();
500500
if (fieldCounts.getOrDefault(fieldName, 0) == 1) {
501501
// Check that all docs on this field have exactly 1 value, otherwise we can't perform this rewrite
502502
if (checkAllDocsHaveOneValue(leafReaderContexts, fieldName)) {
503-
List<QueryBuilder> complement = caq.getComplement(shardContext);
503+
List<? extends QueryBuilder> complement = caq.getComplement(shardContext);
504504
if (complement != null) {
505505
BoolQueryBuilder nestedBoolQuery = new BoolQueryBuilder();
506506
nestedBoolQuery.minimumShouldMatch(1);

server/src/main/java/org/opensearch/index/query/ComplementAwareQueryBuilder.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@
1313
/**
1414
* A QueryBuilder which can provide QueryBuilders that make up the complement of the original query.
1515
*/
16-
public interface ComplementAwareQueryBuilder extends WithFieldName {
16+
public interface ComplementAwareQueryBuilder {
1717
/**
1818
* Returns a list of RangeQueryBuilder whose elements, when combined, form the complement of this range query.
1919
* May be null, in which case the complement couldn't be determined.
2020
* @return the complement
2121
*/
22-
List<QueryBuilder> getComplement(QueryShardContext context);
22+
List<? extends QueryBuilder> getComplement(QueryShardContext context);
2323
}

server/src/main/java/org/opensearch/index/query/MatchQueryBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@
5858
*
5959
* @opensearch.internal
6060
*/
61-
public class MatchQueryBuilder extends AbstractQueryBuilder<MatchQueryBuilder> implements ComplementAwareQueryBuilder {
61+
public class MatchQueryBuilder extends AbstractQueryBuilder<MatchQueryBuilder> implements ComplementAwareQueryBuilder, WithFieldName {
6262

6363
private static final String CUTOFF_FREQUENCY_DEPRECATION_MSG = "you can omit this option, "
6464
+ "the [match] query can skip block of documents efficiently if the total number of hits is not tracked";

server/src/main/java/org/opensearch/index/query/RangeQueryBuilder.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -549,12 +549,12 @@ protected boolean doEquals(RangeQueryBuilder other) {
549549
}
550550

551551
@Override
552-
public List<QueryBuilder> getComplement(QueryShardContext context) {
552+
public List<? extends QueryBuilder> getComplement(QueryShardContext context) {
553553
// This implementation doesn't need info from QueryShardContext
554554
if (relation != null && relation != ShapeRelation.INTERSECTS) {
555555
return null;
556556
}
557-
List<QueryBuilder> complement = new ArrayList<>();
557+
List<RangeQueryBuilder> complement = new ArrayList<>();
558558
if (from != null) {
559559
RangeQueryBuilder belowRange = new RangeQueryBuilder(fieldName);
560560
belowRange.to(from);
@@ -570,13 +570,13 @@ public List<QueryBuilder> getComplement(QueryShardContext context) {
570570
}
571571

572572
if (format != null) {
573-
for (QueryBuilder rq : complement) {
574-
((RangeQueryBuilder) rq).format(format);
573+
for (RangeQueryBuilder rq : complement) {
574+
rq.format(format);
575575
}
576576
}
577577
if (timeZone != null) {
578-
for (QueryBuilder rq : complement) {
579-
((RangeQueryBuilder) rq).timeZone = timeZone;
578+
for (RangeQueryBuilder rq : complement) {
579+
rq.timeZone = timeZone;
580580
}
581581
}
582582

server/src/main/java/org/opensearch/index/query/TermsQueryBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@
8080
*
8181
* @opensearch.internal
8282
*/
83-
public class TermsQueryBuilder extends AbstractQueryBuilder<TermsQueryBuilder> implements ComplementAwareQueryBuilder {
83+
public class TermsQueryBuilder extends AbstractQueryBuilder<TermsQueryBuilder> implements ComplementAwareQueryBuilder, WithFieldName {
8484
public static final String NAME = "terms";
8585

8686
private final String fieldName;

server/src/test/java/org/opensearch/index/query/MatchQueryBuilderTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -669,7 +669,7 @@ static void testGetComplementNumericField(
669669
String fieldName,
670670
IndexSearcher searcher
671671
) {
672-
List<QueryBuilder> complement = queryBuilder.getComplement(createShardContext(searcher));
672+
List<? extends QueryBuilder> complement = queryBuilder.getComplement(createShardContext(searcher));
673673
RangeQueryBuilder expectedLower = new RangeQueryBuilder(fieldName).to(value).includeLower(true).includeUpper(false);
674674
RangeQueryBuilder expectedUpper = new RangeQueryBuilder(fieldName).from(value).includeLower(false).includeUpper(true);
675675
assertEquals(2, complement.size());

0 commit comments

Comments
 (0)