@@ -199,14 +199,21 @@ static void executeKnnVectorQuery(SearchContext context) throws IOException {
199199 final long beforeQueryTime = System .nanoTime ();
200200 var opsListener = context .indexShard ().getSearchOperationListener ();
201201 opsListener .onPreQueryPhase (context );
202- for (int i = 0 ; i < knnSearch .size (); i ++) {
203- String knnField = knnVectorQueryBuilders .get (i ).getFieldName ();
204- String knnNestedPath = searchExecutionContext .nestedLookup ().getNestedParent (knnField );
205- Query knnQuery = searchExecutionContext .toQuery (knnVectorQueryBuilders .get (i )).query ();
206- knnResults .add (singleKnnSearch (knnQuery , knnSearch .get (i ).k (), context .getProfilers (), context .searcher (), knnNestedPath ));
202+ try {
203+ for (int i = 0 ; i < knnSearch .size (); i ++) {
204+ String knnField = knnVectorQueryBuilders .get (i ).getFieldName ();
205+ String knnNestedPath = searchExecutionContext .nestedLookup ().getNestedParent (knnField );
206+ Query knnQuery = searchExecutionContext .toQuery (knnVectorQueryBuilders .get (i )).query ();
207+ knnResults .add (singleKnnSearch (knnQuery , knnSearch .get (i ).k (), context .getProfilers (), context .searcher (), knnNestedPath ));
208+ }
209+ afterQueryTime = System .nanoTime ();
210+ opsListener .onQueryPhase (context , afterQueryTime - beforeQueryTime );
211+ opsListener = null ;
212+ } finally {
213+ if (opsListener != null ) {
214+ opsListener .onFailedQueryPhase (context );
215+ }
207216 }
208- afterQueryTime = System .nanoTime ();
209- opsListener .onQueryPhase (context , afterQueryTime - beforeQueryTime );
210217 context .dfsResult ().knnResults (knnResults );
211218 }
212219
0 commit comments