alibaba / havenask-federation

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

向量索引,查询不存在的字段,会报NPE

weizijun opened this issue · comments

向量索引,查询不存在的字段,会报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
}

fixed by #299