OpenSearch icon indicating copy to clipboard operation
OpenSearch copied to clipboard

[BUG] Null pointer exception on a term filter nested inside a script score

Open kbytesys opened this issue 11 months ago • 0 comments

Describe the bug

I get null pointer exception when I try to use the term filter in a script score nested query, the strange thing is that if at least one document matches or the field is not present in the document, everything works fine, but if the fields exists and no documents match the query I got this error:

{
  "error": {
    "root_cause": [
      {
        "type": "null_pointer_exception",
        "reason": null
      }
    ],
    "type": "search_phase_execution_exception",
    "reason": "all shards failed",
    "phase": "query",
    "grouped": true,
    "failed_shards": [
      {
        "shard": 0,
        "index": "profili-professionali",
        "node": "iT61hmLTStWkYZRIQJ4fcw",
        "reason": {
          "type": "null_pointer_exception",
          "reason": null
        }
      }
    ],
    "caused_by": {
      "type": "null_pointer_exception",
      "reason": null,
      "caused_by": {
        "type": "null_pointer_exception",
        "reason": null
      }
    }
  },
  "status": 500
}

Related component

Search

To Reproduce

  1. You can create a simple index and you can go to the dev console in order to run a simple query
  2. run a query like this one: POST profili-professionali/_search?explain=true
{
   "query":{
      "script_score":{
         "query":{
            "bool":{
               "must":{
                  "match_all":{
                     
                  }
               },
               "filter":[
                  {
                     "term":{
                        "yourfield":"valuethatmakethefiltertohave0results"
                     }
                  }
               ]
            }
         },
         "script":{
            "source":"0"
         }
      }
   }
}
  1. Check the error you get.

Expected behavior

I should at least get an empty result instead of that error.

Additional Details

Plugins no plugins

Host/Environment (please complete the following information):

  • OS: Docker release Linux
  • Version 3.0.0

Stacktrace

org.opensearch.action.search.SearchPhaseExecutionException: all shards failed
        at org.opensearch.action.search.AbstractSearchAsyncAction.onPhaseFailure(AbstractSearchAsyncAction.java:775) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.action.search.AbstractSearchAsyncAction.executeNextPhase(AbstractSearchAsyncAction.java:395) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.action.search.AbstractSearchAsyncAction.onPhaseDone(AbstractSearchAsyncAction.java:815) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.action.search.AbstractSearchAsyncAction.onShardFailure(AbstractSearchAsyncAction.java:548) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.action.search.AbstractSearchAsyncAction$1.onFailure(AbstractSearchAsyncAction.java:316) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.action.search.SearchExecutionStatsCollector.onFailure(SearchExecutionStatsCollector.java:104) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.action.ActionListenerResponseHandler.handleException(ActionListenerResponseHandler.java:75) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.action.search.SearchTransportService$ConnectionCountingHandler.handleException(SearchTransportService.java:760) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.transport.TransportService$9.handleException(TransportService.java:1719) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.security.transport.SecurityInterceptor$RestoringTransportResponseHandler.handleException(SecurityInterceptor.java:426) ~[?:?]
        at org.opensearch.transport.TransportService$ContextRestoreResponseHandler.handleException(TransportService.java:1505) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.transport.TransportService$DirectResponseChannel.processException(TransportService.java:1619) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.transport.TransportService$DirectResponseChannel.sendResponse(TransportService.java:1593) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.transport.TaskTransportChannel.sendResponse(TaskTransportChannel.java:81) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.transport.TransportChannel.sendErrorResponse(TransportChannel.java:75) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.action.support.ChannelActionListener.onFailure(ChannelActionListener.java:70) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.action.ActionRunnable.onFailure(ActionRunnable.java:104) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:54) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.threadpool.TaskAwareRunnable.doRun(TaskAwareRunnable.java:78) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:52) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.common.util.concurrent.TimedRunnable.doRun(TimedRunnable.java:59) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:975) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:52) ~[opensearch-3.0.0.jar:3.0.0]
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[?:?]
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[?:?]
        at java.base/java.lang.Thread.run(Thread.java:1583) [?:?]
Caused by: org.opensearch.OpenSearchException$3
        at org.opensearch.OpenSearchException.guessRootCauses(OpenSearchException.java:716) ~[opensearch-core-3.0.0.jar:3.0.0]
        at org.opensearch.action.search.AbstractSearchAsyncAction.executeNextPhase(AbstractSearchAsyncAction.java:393) ~[opensearch-3.0.0.jar:3.0.0]
        ... 24 more
Caused by: java.lang.NullPointerException
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) ~[?:?]
        at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1685) ~[?:?]
        at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129) ~[?:?]
        at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527) ~[?:?]
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513) ~[?:?]
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[?:?]
        at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230) ~[?:?]
        at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196) ~[?:?]
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
        at java.base/java.util.stream.ReferencePipeline.allMatch(ReferencePipeline.java:637) ~[?:?]
        at org.apache.lucene.search.BooleanScorerSupplier.requiredBulkScorer(BooleanScorerSupplier.java:378) ~[lucene-core-10.1.0.jar:10.1.0 884954006de769dc43b811267230d625886e6515 - 2024-12-17 16:15:44]
        at org.apache.lucene.search.BooleanScorerSupplier.booleanScorer(BooleanScorerSupplier.java:216) ~[lucene-core-10.1.0.jar:10.1.0 884954006de769dc43b811267230d625886e6515 - 2024-12-17 16:15:44] 
        at org.apache.lucene.search.BooleanScorerSupplier.bulkScorer(BooleanScorerSupplier.java:174) ~[lucene-core-10.1.0.jar:10.1.0 884954006de769dc43b811267230d625886e6515 - 2024-12-17 16:15:44]    
        at org.apache.lucene.search.Weight.bulkScorer(Weight.java:178) ~[lucene-core-10.1.0.jar:10.1.0 884954006de769dc43b811267230d625886e6515 - 2024-12-17 16:15:44]
        at org.opensearch.search.internal.ContextIndexSearcher$1$1.bulkScorer(ContextIndexSearcher.java:421) ~[opensearch-3.0.0.jar:3.0.0]
        at org.apache.lucene.search.Weight.bulkScorer(Weight.java:178) ~[lucene-core-10.1.0.jar:10.1.0 884954006de769dc43b811267230d625886e6515 - 2024-12-17 16:15:44]
        at org.opensearch.search.internal.ContextIndexSearcher.searchLeaf(ContextIndexSearcher.java:353) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.search.internal.ContextIndexSearcher.search(ContextIndexSearcher.java:305) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.search.internal.ContextIndexSearcher.search(ContextIndexSearcher.java:269) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.search.query.QueryPhase.searchWithCollector(QueryPhase.java:355) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.search.query.QueryPhase$DefaultQueryPhaseSearcher.searchWithCollector(QueryPhase.java:462) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.search.query.QueryPhase$DefaultQueryPhaseSearcher.searchWithCollector(QueryPhase.java:450) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.search.query.QueryPhase$DefaultQueryPhaseSearcher.searchWith(QueryPhase.java:432) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.search.query.QueryPhaseSearcherWrapper.searchWith(QueryPhaseSearcherWrapper.java:60) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.neuralsearch.search.query.HybridQueryPhaseSearcher.searchWith(HybridQueryPhaseSearcher.java:61) ~[?:?]
        at org.opensearch.search.query.QueryPhase.executeInternal(QueryPhase.java:282) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.search.query.QueryPhase.execute(QueryPhase.java:155) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:659) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.search.SearchService.executeQueryPhase(SearchService.java:723) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.search.SearchService$2.lambda$onResponse$0(SearchService.java:692) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.action.ActionRunnable.lambda$supply$0(ActionRunnable.java:74) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.action.ActionRunnable$2.doRun(ActionRunnable.java:89) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:52) ~[opensearch-3.0.0.jar:3.0.0]
        ... 8 more

kbytesys avatar Jun 05 '25 11:06 kbytesys