Skip to content

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

@kbytesys

Description

@kbytesys

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    SearchSearch query, autocomplete ...etcbugSomething isn't workinglucene

    Type

    No type

    Projects

    Status

    🆕 New

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions