Skip to content

Commit fcc231d

Browse files
zhichao-awsdblock
andauthored
[BUG FIX] Fix the visit of inner query for NestedQueryBuilder (opensearch-project#14739)
* fix nested query visit subquery Signed-off-by: zhichao-aws <zhichaog@amazon.com> * add change log Signed-off-by: zhichao-aws <zhichaog@amazon.com> --------- Signed-off-by: zhichao-aws <zhichaog@amazon.com> Signed-off-by: Daniel (dB.) Doubrovkine <dblock@amazon.com> Co-authored-by: Daniel (dB.) Doubrovkine <dblock@amazon.com>
1 parent 76be615 commit fcc231d

File tree

3 files changed

+21
-0
lines changed

3 files changed

+21
-0
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
9898
- Use circuit breaker in InternalHistogram when adding empty buckets ([#14754](https://github.com/opensearch-project/OpenSearch/pull/14754))
9999
- Create new IndexInput for multi part upload ([#14888](https://github.com/opensearch-project/OpenSearch/pull/14888))
100100
- Fix searchable snapshot failure with scripted fields ([#14411](https://github.com/opensearch-project/OpenSearch/pull/14411))
101+
- Fix the visit of inner query for NestedQueryBuilder ([#14739](https://github.com/opensearch-project/OpenSearch/pull/14739))
101102

102103
### Security
103104

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

+9
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434

3535
import org.apache.lucene.index.LeafReaderContext;
3636
import org.apache.lucene.index.ReaderUtil;
37+
import org.apache.lucene.search.BooleanClause;
3738
import org.apache.lucene.search.MatchNoDocsQuery;
3839
import org.apache.lucene.search.MultiCollector;
3940
import org.apache.lucene.search.Query;
@@ -505,4 +506,12 @@ public TopDocsAndMaxScore topDocs(SearchHit hit) throws IOException {
505506
}
506507
}
507508
}
509+
510+
@Override
511+
public void visit(QueryBuilderVisitor visitor) {
512+
visitor.accept(this);
513+
if (query != null) {
514+
visitor.getChildVisitor(BooleanClause.Occur.MUST).accept(query);
515+
}
516+
}
508517
}

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

+11
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,10 @@
5959
import org.hamcrest.Matchers;
6060

6161
import java.io.IOException;
62+
import java.util.ArrayList;
6263
import java.util.Collections;
6364
import java.util.HashMap;
65+
import java.util.List;
6466
import java.util.Map;
6567
import java.util.Optional;
6668

@@ -565,4 +567,13 @@ void doWithDepth(int depth, ThrowingConsumer<QueryShardContext> test) throws Exc
565567
);
566568
}
567569
}
570+
571+
public void testVisit() {
572+
NestedQueryBuilder builder = new NestedQueryBuilder("path", new MatchAllQueryBuilder(), ScoreMode.None);
573+
574+
List<QueryBuilder> visitedQueries = new ArrayList<>();
575+
builder.visit(createTestVisitor(visitedQueries));
576+
577+
assertEquals(2, visitedQueries.size());
578+
}
568579
}

0 commit comments

Comments
 (0)