Skip to content

NullPointerException when performing multi_match, cross_fields search (es v7.0.0) #41118

@OlegIlyenko

Description

@OlegIlyenko

Elasticsearch version (bin/elasticsearch --version): 7.0.0

Plugins installed: []

JVM version (java -version):

openjdk version "12" 2019-03-19
OpenJDK Runtime Environment (build 12+33)
OpenJDK 64-Bit Server VM (build 12+33, mixed mode, sharing)

OS version (uname -a if on a Unix-like system):

Linux cdd942b44b37 4.9.93-linuxkit-aufs #1 SMP Wed Jun 6 16:55:56 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

I'm using the official docker image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.0.0

Description:

Elasticsearch returns 500 HTTP status code when performing simple multi_match, cross_fields search.

Elasticsearch 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": "test",
        "node": "PRfR5iQ9S8mCvsiMYbrHbw",
        "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
}

Exception stack trace:

org.elasticsearch.action.search.SearchPhaseExecutionException: all shards failed
  at org.elasticsearch.action.search.AbstractSearchAsyncAction.onPhaseFailure(AbstractSearchAsyncAction.java:296) [elasticsearch-7.0.0.jar:7.0.0]
  at org.elasticsearch.action.search.AbstractSearchAsyncAction.executeNextPhase(AbstractSearchAsyncAction.java:139) [elasticsearch-7.0.0.jar:7.0.0]
  at org.elasticsearch.action.search.AbstractSearchAsyncAction.onPhaseDone(AbstractSearchAsyncAction.java:259) [elasticsearch-7.0.0.jar:7.0.0]
  at org.elasticsearch.action.search.InitialSearchPhase.onShardFailure(InitialSearchPhase.java:105) [elasticsearch-7.0.0.jar:7.0.0]
  at org.elasticsearch.action.search.InitialSearchPhase.access$200(InitialSearchPhase.java:50) [elasticsearch-7.0.0.jar:7.0.0]
  at org.elasticsearch.action.search.InitialSearchPhase$2.onFailure(InitialSearchPhase.java:273) [elasticsearch-7.0.0.jar:7.0.0]
  at org.elasticsearch.action.search.SearchExecutionStatsCollector.onFailure(SearchExecutionStatsCollector.java:73) [elasticsearch-7.0.0.jar:7.0.0]
  at org.elasticsearch.action.ActionListenerResponseHandler.handleException(ActionListenerResponseHandler.java:59) [elasticsearch-7.0.0.jar:7.0.0]
  at org.elasticsearch.action.search.SearchTransportService$ConnectionCountingHandler.handleException(SearchTransportService.java:441) [elasticsearch-7.0.0.jar:7.0.0]
  at org.elasticsearch.transport.TransportService$ContextRestoreResponseHandler.handleException(TransportService.java:1118) [elasticsearch-7.0.0.jar:7.0.0]
  at org.elasticsearch.transport.TransportService$DirectResponseChannel.processException(TransportService.java:1230) [elasticsearch-7.0.0.jar:7.0.0]
  at org.elasticsearch.transport.TransportService$DirectResponseChannel.sendResponse(TransportService.java:1204) [elasticsearch-7.0.0.jar:7.0.0]
  at org.elasticsearch.transport.TaskTransportChannel.sendResponse(TaskTransportChannel.java:60) [elasticsearch-7.0.0.jar:7.0.0]
  at org.elasticsearch.action.support.ChannelActionListener.onFailure(ChannelActionListener.java:56) [elasticsearch-7.0.0.jar:7.0.0]
  at org.elasticsearch.search.SearchService$2.onFailure(SearchService.java:366) [elasticsearch-7.0.0.jar:7.0.0]
  at org.elasticsearch.search.SearchService$2.onResponse(SearchService.java:360) [elasticsearch-7.0.0.jar:7.0.0]
  at org.elasticsearch.search.SearchService$2.onResponse(SearchService.java:354) [elasticsearch-7.0.0.jar:7.0.0]
  at org.elasticsearch.search.SearchService$4.doRun(SearchService.java:1069) [elasticsearch-7.0.0.jar:7.0.0]
  at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) [elasticsearch-7.0.0.jar:7.0.0]
  at org.elasticsearch.common.util.concurrent.TimedRunnable.doRun(TimedRunnable.java:41) [elasticsearch-7.0.0.jar:7.0.0]
  at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:751) [elasticsearch-7.0.0.jar:7.0.0]
  at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) [elasticsearch-7.0.0.jar:7.0.0]
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
  at java.lang.Thread.run(Thread.java:835) [?:?]
Caused by: org.elasticsearch.ElasticsearchException$1
  at org.elasticsearch.ElasticsearchException.guessRootCauses(ElasticsearchException.java:639) ~[elasticsearch-7.0.0.jar:7.0.0]
  at org.elasticsearch.action.search.AbstractSearchAsyncAction.executeNextPhase(AbstractSearchAsyncAction.java:137) [elasticsearch-7.0.0.jar:7.0.0]
  ... 23 more
Caused by: java.lang.NullPointerException
  at java.util.Objects.requireNonNull(Objects.java:221) ~[?:?]
  at org.apache.lucene.search.LeafSimScorer.<init>(LeafSimScorer.java:38) ~[lucene-core-8.0.0.jar:8.0.0 2ae4746365c1ee72a0047ced7610b2096e438979 - jimczi - 2019-03-08 11:58:55]
  at org.apache.lucene.search.TermQuery$TermWeight.scorer(TermQuery.java:113) ~[lucene-core-8.0.0.jar:8.0.0 2ae4746365c1ee72a0047ced7610b2096e438979 - jimczi - 2019-03-08 11:58:55]
  at org.apache.lucene.search.DisjunctionMaxQuery$DisjunctionMaxWeight.scorer(DisjunctionMaxQuery.java:139) ~[lucene-core-8.0.0.jar:8.0.0 2ae4746365c1ee72a0047ced7610b2096e438979 - jimczi - 2019-03-08 11:58:55]
  at org.apache.lucene.search.Weight.bulkScorer(Weight.java:177) ~[lucene-core-8.0.0.jar:8.0.0 2ae4746365c1ee72a0047ced7610b2096e438979 - jimczi - 2019-03-08 11:58:55]
  at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:649) ~[lucene-core-8.0.0.jar:8.0.0 2ae4746365c1ee72a0047ced7610b2096e438979 - jimczi - 2019-03-08 11:58:55]
  at org.elasticsearch.search.internal.ContextIndexSearcher.search(ContextIndexSearcher.java:177) ~[elasticsearch-7.0.0.jar:7.0.0]
  at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:443) ~[lucene-core-8.0.0.jar:8.0.0 2ae4746365c1ee72a0047ced7610b2096e438979 - jimczi - 2019-03-08 11:58:55]
  at org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:275) ~[elasticsearch-7.0.0.jar:7.0.0]
  at org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:115) ~[elasticsearch-7.0.0.jar:7.0.0]
  at org.elasticsearch.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:349) ~[elasticsearch-7.0.0.jar:7.0.0]
  at org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:393) ~[elasticsearch-7.0.0.jar:7.0.0]
  at org.elasticsearch.search.SearchService.access$100(SearchService.java:124) ~[elasticsearch-7.0.0.jar:7.0.0]
  at org.elasticsearch.search.SearchService$2.onResponse(SearchService.java:358) ~[elasticsearch-7.0.0.jar:7.0.0]
  ... 9 more

Steps to reproduce:

(1) Start elasticsearch:

docker run \
  --rm \
  -it \
  -p 9200:9200 \
  -e discovery.type=single-node \
  docker.elastic.co/elasticsearch/elasticsearch-oss:7.0.0

(2) Create a test mapping:

curl --request PUT \
  --url http://localhost:9200/test \
  --header 'content-type: application/json' \
  --data '{
	"mappings": {
		"dynamic": false,
		"properties": {
			"name": {
				"type": "text",
				"analyzer": "english"
			},
			"description": {
				"type": "text",
				"analyzer": "english"
			}
		}
	}
}'

(3) Add a document:

curl --request PUT \
  --url http://localhost:9200/test/_doc/1 \
  --header 'content-type: application/json' \
  --data '{
	"name": "First Document"
}'

(4) Perform search:

curl --request GET \
  --url http://localhost:9200/test/_search \
  --header 'content-type: application/json' \
  --data '{
	"query": {
		"multi_match": {
			"query": "first",
			"type": "cross_fields",
			"operator": "or",
			"fields": [
				"name",
				"description"
			]
		}
	}
}'

Metadata

Metadata

Assignees

No one assigned

    Labels

    :Search/SearchSearch-related issues that do not fall into other categories>bug

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions