向量索引,查询不存在的字段,会报NPE
weizijun opened this issue · comments
weizijun commented
向量索引,查询不存在的字段,会报NPE,示例如下:
POST image_index/_search?error_trace
{
"knn": {
"field": "image-vector",
"query_vector": [-5, 9, -12],
"k": 10,
"num_candidates": 100
},
"fields": [ "title", "file-type" ]
}
{
"error" : {
"root_cause" : [
{
"type" : "null_pointer_exception",
"reason" : null,
"stack_trace" : "; nested: NullPointerException;\n\tat org.havenask.HavenaskException.guessRootCauses(HavenaskException.java:680)\n\tat org.havenask.action.search.SearchPhaseExecutionException.guessRootCauses(SearchPhaseExecutionException.java:181)\n\tat org.havenask.HavenaskException.guessRootCauses(HavenaskException.java:662)\n\tat org.havenask.HavenaskException.generateFailureXContent(HavenaskException.java:608)\n\tat org.havenask.rest.BytesRestResponse.build(BytesRestResponse.java:169)\n\tat org.havenask.rest.BytesRestResponse.<init>(BytesRestResponse.java:130)\n\tat org.havenask.rest.BytesRestResponse.<init>(BytesRestResponse.java:113)\n\tat org.havenask.rest.action.RestActionListener.onFailure(RestActionListener.java:78)\n\tat org.havenask.rest.action.RestCancellableNodeClient$1.onFailure(RestCancellableNodeClient.java:126)\n\tat org.havenask.action.support.TransportAction$1.onFailure(TransportAction.java:118)\n\tat org.havenask.action.ActionListener$5.onFailure(ActionListener.java:278)\n\tat org.havenask.action.search.AbstractSearchAsyncAction.raisePhaseFailure(AbstractSearchAsyncAction.java:613)\n\tat org.havenask.action.search.AbstractSearchAsyncAction.onPhaseFailure(AbstractSearchAsyncAction.java:587)\n\tat org.havenask.action.search.AbstractSearchAsyncAction.executeNextPhase(AbstractSearchAsyncAction.java:343)\n\tat org.havenask.action.search.AbstractSearchAsyncAction.onPhaseDone(AbstractSearchAsyncAction.java:622)\n\tat org.havenask.action.search.AbstractSearchAsyncAction.onShardFailure(AbstractSearchAsyncAction.java:419)\n\tat org.havenask.action.search.AbstractSearchAsyncAction.access$100(AbstractSearchAsyncAction.java:89)\n\tat org.havenask.action.search.AbstractSearchAsyncAction$1.onFailure(AbstractSearchAsyncAction.java:277)\n\tat org.havenask.action.search.SearchExecutionStatsCollector.onFailure(SearchExecutionStatsCollector.java:93)\n\tat org.havenask.action.ActionListenerResponseHandler.handleException(ActionListenerResponseHandler.java:79)\n\tat org.havenask.action.search.SearchTransportService$ConnectionCountingHandler.handleException(SearchTransportService.java:429)\n\tat org.havenask.transport.TransportService$6.handleException(TransportService.java:671)\n\tat org.havenask.transport.TransportService$ContextRestoreResponseHandler.handleException(TransportService.java:1224)\n\tat org.havenask.transport.TransportService$DirectResponseChannel.processException(TransportService.java:1333)\n\tat org.havenask.transport.TransportService$DirectResponseChannel.sendResponse(TransportService.java:1307)\n\tat org.havenask.transport.TaskTransportChannel.sendResponse(TaskTransportChannel.java:81)\n\tat org.havenask.transport.TransportChannel.sendErrorResponse(TransportChannel.java:76)\n\tat org.havenask.action.support.ChannelActionListener.onFailure(ChannelActionListener.java:71)\n\tat org.havenask.action.ActionRunnable.onFailure(ActionRunnable.java:108)\n\tat org.havenask.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:59)\n\tat org.havenask.common.util.concurrent.TimedRunnable.doRun(TimedRunnable.java:64)\n\tat org.havenask.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:763)\n\tat org.havenask.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:57)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)\n\tat java.base/java.lang.Thread.run(Thread.java:834)\nCaused by: java.lang.NullPointerException\n\tat org.havenask.engine.index.engine.QueryTransformer.toSql(QueryTransformer.java:60)\n\tat org.havenask.engine.index.engine.HavenaskIndexSearcher.search(HavenaskIndexSearcher.java:75)\n\tat org.havenask.search.query.QueryPhase.searchWithCollector(QueryPhase.java:361)\n\tat org.havenask.search.query.QueryPhase.executeInternal(QueryPhase.java:316)\n\tat org.havenask.search.query.QueryPhase.execute(QueryPhase.java:168)\n\tat org.havenask.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:392)\n\tat org.havenask.search.SearchService.executeQueryPhase(SearchService.java:451)\n\tat org.havenask.search.SearchService.access$500(SearchService.java:161)\n\tat org.havenask.search.SearchService$2.lambda$onResponse$0(SearchService.java:421)\n\tat org.havenask.action.ActionRunnable.lambda$supply$0(ActionRunnable.java:78)\n\tat org.havenask.action.ActionRunnable$2.doRun(ActionRunnable.java:93)\n\tat org.havenask.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:57)\n\t... 6 more\n"
}
],
"type" : "search_phase_execution_exception",
"reason" : "all shards failed",
"phase" : "query",
"grouped" : true,
"failed_shards" : [
{
"shard" : 0,
"index" : "image_index",
"node" : "nGlwl_hpRcyjJSpS1eWqOg",
"reason" : {
"type" : "null_pointer_exception",
"reason" : null,
"stack_trace" : "java.lang.NullPointerException\n\tat org.havenask.engine.index.engine.QueryTransformer.toSql(QueryTransformer.java:60)\n\tat org.havenask.engine.index.engine.HavenaskIndexSearcher.search(HavenaskIndexSearcher.java:75)\n\tat org.havenask.search.query.QueryPhase.searchWithCollector(QueryPhase.java:361)\n\tat org.havenask.search.query.QueryPhase.executeInternal(QueryPhase.java:316)\n\tat org.havenask.search.query.QueryPhase.execute(QueryPhase.java:168)\n\tat org.havenask.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:392)\n\tat org.havenask.search.SearchService.executeQueryPhase(SearchService.java:451)\n\tat org.havenask.search.SearchService.access$500(SearchService.java:161)\n\tat org.havenask.search.SearchService$2.lambda$onResponse$0(SearchService.java:421)\n\tat org.havenask.action.ActionRunnable.lambda$supply$0(ActionRunnable.java:78)\n\tat org.havenask.action.ActionRunnable$2.doRun(ActionRunnable.java:93)\n\tat org.havenask.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:57)\n\tat org.havenask.common.util.concurrent.TimedRunnable.doRun(TimedRunnable.java:64)\n\tat org.havenask.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:763)\n\tat org.havenask.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:57)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)\n\tat java.base/java.lang.Thread.run(Thread.java:834)\n"
}
}
],
"caused_by" : {
"type" : "null_pointer_exception",
"reason" : null,
"caused_by" : {
"type" : "null_pointer_exception",
"reason" : null,
"stack_trace" : "java.lang.NullPointerException\n\tat org.havenask.engine.index.engine.QueryTransformer.toSql(QueryTransformer.java:60)\n\tat org.havenask.engine.index.engine.HavenaskIndexSearcher.search(HavenaskIndexSearcher.java:75)\n\tat org.havenask.search.query.QueryPhase.searchWithCollector(QueryPhase.java:361)\n\tat org.havenask.search.query.QueryPhase.executeInternal(QueryPhase.java:316)\n\tat org.havenask.search.query.QueryPhase.execute(QueryPhase.java:168)\n\tat org.havenask.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:392)\n\tat org.havenask.search.SearchService.executeQueryPhase(SearchService.java:451)\n\tat org.havenask.search.SearchService.access$500(SearchService.java:161)\n\tat org.havenask.search.SearchService$2.lambda$onResponse$0(SearchService.java:421)\n\tat org.havenask.action.ActionRunnable.lambda$supply$0(ActionRunnable.java:78)\n\tat org.havenask.action.ActionRunnable$2.doRun(ActionRunnable.java:93)\n\tat org.havenask.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:57)\n\tat org.havenask.common.util.concurrent.TimedRunnable.doRun(TimedRunnable.java:64)\n\tat org.havenask.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:763)\n\tat org.havenask.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:57)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)\n\tat java.base/java.lang.Thread.run(Thread.java:834)\n"
},
"stack_trace" : "; nested: NullPointerException;\n\tat org.havenask.HavenaskException.guessRootCauses(HavenaskException.java:680)\n\tat org.havenask.action.search.AbstractSearchAsyncAction.executeNextPhase(AbstractSearchAsyncAction.java:341)\n\tat org.havenask.action.search.AbstractSearchAsyncAction.onPhaseDone(AbstractSearchAsyncAction.java:622)\n\tat org.havenask.action.search.AbstractSearchAsyncAction.onShardFailure(AbstractSearchAsyncAction.java:419)\n\tat org.havenask.action.search.AbstractSearchAsyncAction.access$100(AbstractSearchAsyncAction.java:89)\n\tat org.havenask.action.search.AbstractSearchAsyncAction$1.onFailure(AbstractSearchAsyncAction.java:277)\n\tat org.havenask.action.search.SearchExecutionStatsCollector.onFailure(SearchExecutionStatsCollector.java:93)\n\tat org.havenask.action.ActionListenerResponseHandler.handleException(ActionListenerResponseHandler.java:79)\n\tat org.havenask.action.search.SearchTransportService$ConnectionCountingHandler.handleException(SearchTransportService.java:429)\n\tat org.havenask.transport.TransportService$6.handleException(TransportService.java:671)\n\tat org.havenask.transport.TransportService$ContextRestoreResponseHandler.handleException(TransportService.java:1224)\n\tat org.havenask.transport.TransportService$DirectResponseChannel.processException(TransportService.java:1333)\n\tat org.havenask.transport.TransportService$DirectResponseChannel.sendResponse(TransportService.java:1307)\n\tat org.havenask.transport.TaskTransportChannel.sendResponse(TaskTransportChannel.java:81)\n\tat org.havenask.transport.TransportChannel.sendErrorResponse(TransportChannel.java:76)\n\tat org.havenask.action.support.ChannelActionListener.onFailure(ChannelActionListener.java:71)\n\tat org.havenask.action.ActionRunnable.onFailure(ActionRunnable.java:108)\n\tat org.havenask.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:59)\n\tat org.havenask.common.util.concurrent.TimedRunnable.doRun(TimedRunnable.java:64)\n\tat org.havenask.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:763)\n\tat org.havenask.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:57)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)\n\tat java.base/java.lang.Thread.run(Thread.java:834)\nCaused by: java.lang.NullPointerException\n\tat org.havenask.engine.index.engine.QueryTransformer.toSql(QueryTransformer.java:60)\n\tat org.havenask.engine.index.engine.HavenaskIndexSearcher.search(HavenaskIndexSearcher.java:75)\n\tat org.havenask.search.query.QueryPhase.searchWithCollector(QueryPhase.java:361)\n\tat org.havenask.search.query.QueryPhase.executeInternal(QueryPhase.java:316)\n\tat org.havenask.search.query.QueryPhase.execute(QueryPhase.java:168)\n\tat org.havenask.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:392)\n\tat org.havenask.search.SearchService.executeQueryPhase(SearchService.java:451)\n\tat org.havenask.search.SearchService.access$500(SearchService.java:161)\n\tat org.havenask.search.SearchService$2.lambda$onResponse$0(SearchService.java:421)\n\tat org.havenask.action.ActionRunnable.lambda$supply$0(ActionRunnable.java:78)\n\tat org.havenask.action.ActionRunnable$2.doRun(ActionRunnable.java:93)\n\tat org.havenask.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:57)\n\t... 6 more\n"
},
"stack_trace" : "Failed to execute phase [query], all shards failed; shardFailures {[nGlwl_hpRcyjJSpS1eWqOg][image_index][0]: RemoteTransportException[[l57a12214.sqa.nu8][11.167.164.104:9300][indices:data/read/search[phase/query]]]; nested: QueryPhaseExecutionException[Query Failed [Failed to execute main query]]; nested: NullPointerException; }\n\tat org.havenask.action.search.AbstractSearchAsyncAction.onPhaseFailure(AbstractSearchAsyncAction.java:587)\n\tat org.havenask.action.search.AbstractSearchAsyncAction.executeNextPhase(AbstractSearchAsyncAction.java:343)\n\tat org.havenask.action.search.AbstractSearchAsyncAction.onPhaseDone(AbstractSearchAsyncAction.java:622)\n\tat org.havenask.action.search.AbstractSearchAsyncAction.onShardFailure(AbstractSearchAsyncAction.java:419)\n\tat org.havenask.action.search.AbstractSearchAsyncAction.access$100(AbstractSearchAsyncAction.java:89)\n\tat org.havenask.action.search.AbstractSearchAsyncAction$1.onFailure(AbstractSearchAsyncAction.java:277)\n\tat org.havenask.action.search.SearchExecutionStatsCollector.onFailure(SearchExecutionStatsCollector.java:93)\n\tat org.havenask.action.ActionListenerResponseHandler.handleException(ActionListenerResponseHandler.java:79)\n\tat org.havenask.action.search.SearchTransportService$ConnectionCountingHandler.handleException(SearchTransportService.java:429)\n\tat org.havenask.transport.TransportService$6.handleException(TransportService.java:671)\n\tat org.havenask.transport.TransportService$ContextRestoreResponseHandler.handleException(TransportService.java:1224)\n\tat org.havenask.transport.TransportService$DirectResponseChannel.processException(TransportService.java:1333)\n\tat org.havenask.transport.TransportService$DirectResponseChannel.sendResponse(TransportService.java:1307)\n\tat org.havenask.transport.TaskTransportChannel.sendResponse(TaskTransportChannel.java:81)\n\tat org.havenask.transport.TransportChannel.sendErrorResponse(TransportChannel.java:76)\n\tat org.havenask.action.support.ChannelActionListener.onFailure(ChannelActionListener.java:71)\n\tat org.havenask.action.ActionRunnable.onFailure(ActionRunnable.java:108)\n\tat org.havenask.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:59)\n\tat org.havenask.common.util.concurrent.TimedRunnable.doRun(TimedRunnable.java:64)\n\tat org.havenask.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:763)\n\tat org.havenask.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:57)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)\n\tat java.base/java.lang.Thread.run(Thread.java:834)\nCaused by: ; nested: NullPointerException;\n\tat org.havenask.HavenaskException.guessRootCauses(HavenaskException.java:680)\n\tat org.havenask.action.search.AbstractSearchAsyncAction.executeNextPhase(AbstractSearchAsyncAction.java:341)\n\t... 22 more\nCaused by: java.lang.NullPointerException\n\tat org.havenask.engine.index.engine.QueryTransformer.toSql(QueryTransformer.java:60)\n\tat org.havenask.engine.index.engine.HavenaskIndexSearcher.search(HavenaskIndexSearcher.java:75)\n\tat org.havenask.search.query.QueryPhase.searchWithCollector(QueryPhase.java:361)\n\tat org.havenask.search.query.QueryPhase.executeInternal(QueryPhase.java:316)\n\tat org.havenask.search.query.QueryPhase.execute(QueryPhase.java:168)\n\tat org.havenask.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:392)\n\tat org.havenask.search.SearchService.executeQueryPhase(SearchService.java:451)\n\tat org.havenask.search.SearchService.access$500(SearchService.java:161)\n\tat org.havenask.search.SearchService$2.lambda$onResponse$0(SearchService.java:421)\n\tat org.havenask.action.ActionRunnable.lambda$supply$0(ActionRunnable.java:78)\n\tat org.havenask.action.ActionRunnable$2.doRun(ActionRunnable.java:93)\n\tat org.havenask.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:57)\n\t... 6 more\n"
},
"status" : 500
}