OpenSearch
OpenSearch copied to clipboard
[BUG] Null pointer exception on a term filter nested inside a script score
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
- You can create a simple index and you can go to the dev console in order to run a simple query
- 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"
}
}
}
}
- 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