Skip to content

Simple combined_fields query fails with java.lang.IndexOutOfBoundsException #74037

@nemphys

Description

@nemphys

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

Plugins installed: [analysis-icu]

JVM version (java -version): built-in

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

Having replaced the use of multi_match cross_fields queries with the new combined_fields query, I am now running into a dead-end.

The query is very simple:

GET /index-name/_search
{
  "query": {
    "combined_fields": {
      "query": "μαύρο",
      "operator": "AND",
      "fields": [
        "title",
        "description"
      ]
    }
  }
}

and fails with the following stacktrace:

org.elasticsearch.action.search.SearchPhaseExecutionException: all shards failed at org.elasticsearch.action.search.AbstractSearchAsyncAction.onPhaseFailure(AbstractSearchAsyncAction.java:661) [elasticsearch-7.13.1.jar:7.13.1] at org.elasticsearch.action.search.AbstractSearchAsyncAction.executeNextPhase(AbstractSearchAsyncAction.java:384) [elasticsearch-7.13.1.jar:7.13.1] at org.elasticsearch.action.search.AbstractSearchAsyncAction.onPhaseDone(AbstractSearchAsyncAction.java:694) [elasticsearch-7.13.1.jar:7.13.1] at org.elasticsearch.action.search.AbstractSearchAsyncAction.onShardFailure(AbstractSearchAsyncAction.java:467) [elasticsearch-7.13.1.jar:7.13.1] at org.elasticsearch.action.search.AbstractSearchAsyncAction.access$000(AbstractSearchAsyncAction.java:62) [elasticsearch-7.13.1.jar:7.13.1] at org.elasticsearch.action.search.AbstractSearchAsyncAction$1.onFailure(AbstractSearchAsyncAction.java:316) [elasticsearch-7.13.1.jar:7.13.1] at org.elasticsearch.action.ActionListener$Delegating.onFailure(ActionListener.java:66) [elasticsearch-7.13.1.jar:7.13.1] at org.elasticsearch.action.ActionListenerResponseHandler.handleException(ActionListenerResponseHandler.java:48) [elasticsearch-7.13.1.jar:7.13.1] at org.elasticsearch.action.search.SearchTransportService$ConnectionCountingHandler.handleException(SearchTransportService.java:400) [elasticsearch-7.13.1.jar:7.13.1] at org.elasticsearch.transport.TransportService$5.handleException(TransportService.java:738) [elasticsearch-7.13.1.jar:7.13.1] at org.elasticsearch.transport.TransportService$ContextRestoreResponseHandler.handleException(TransportService.java:1283) [elasticsearch-7.13.1.jar:7.13.1] at org.elasticsearch.transport.TransportService$DirectResponseChannel.processException(TransportService.java:1392) [elasticsearch-7.13.1.jar:7.13.1] at org.elasticsearch.transport.TransportService$DirectResponseChannel.sendResponse(TransportService.java:1366) [elasticsearch-7.13.1.jar:7.13.1] at org.elasticsearch.transport.TaskTransportChannel.sendResponse(TaskTransportChannel.java:50) [elasticsearch-7.13.1.jar:7.13.1] at org.elasticsearch.transport.TransportChannel.sendErrorResponse(TransportChannel.java:45) [elasticsearch-7.13.1.jar:7.13.1] at org.elasticsearch.action.support.ChannelActionListener.onFailure(ChannelActionListener.java:40) [elasticsearch-7.13.1.jar:7.13.1] at org.elasticsearch.action.ActionRunnable.onFailure(ActionRunnable.java:77) [elasticsearch-7.13.1.jar:7.13.1] at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:28) [elasticsearch-7.13.1.jar:7.13.1] at org.elasticsearch.common.util.concurrent.TimedRunnable.doRun(TimedRunnable.java:33) [elasticsearch-7.13.1.jar:7.13.1] at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:732) [elasticsearch-7.13.1.jar:7.13.1] at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:26) [elasticsearch-7.13.1.jar:7.13.1] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) [?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) [?:?] at java.lang.Thread.run(Thread.java:831) [?:?] Caused by: org.elasticsearch.ElasticsearchException$1 at org.elasticsearch.ElasticsearchException.guessRootCauses(ElasticsearchException.java:633) ~[elasticsearch-7.13.1.jar:7.13.1] at org.elasticsearch.action.search.AbstractSearchAsyncAction.executeNextPhase(AbstractSearchAsyncAction.java:382) [elasticsearch-7.13.1.jar:7.13.1] ... 22 more Caused by: java.lang.IndexOutOfBoundsException at java.nio.Buffer.checkIndex(Buffer.java:742) ~[?:?] at java.nio.DirectByteBuffer.get(DirectByteBuffer.java:297) ~[?:?] at org.apache.lucene.store.ByteBufferGuard.getByte(ByteBufferGuard.java:119) ~[lucene-core-8.8.2.jar:8.8.2 a92a05e195b775b30ca410bc0a26e8e79e7b3bfb - mdrob - 2021-04-06 16:33:27] at org.apache.lucene.store.ByteBufferIndexInput$SingleBufferImpl.readByte(ByteBufferIndexInput.java:434) ~[lucene-core-8.8.2.jar:8.8.2 a92a05e195b775b30ca410bc0a26e8e79e7b3bfb - mdrob - 2021-04-06 16:33:27] at org.apache.lucene.codecs.lucene80.Lucene80NormsProducer$8.longValue(Lucene80NormsProducer.java:397) ~[lucene-core-8.8.2.jar:8.8.2 a92a05e195b775b30ca410bc0a26e8e79e7b3bfb - mdrob - 2021-04-06 16:33:27] at org.apache.lucene.search.XMultiNormsLeafSimScorer$MultiFieldNormValues.advanceExact(XMultiNormsLeafSimScorer.java:135) ~[elasticsearch-7.13.1.jar:8.8.2 a92a05e195b775b30ca410bc0a26e8e79e7b3bfb - mdrob - 2021-04-06 16:33:27] at org.apache.lucene.search.XMultiNormsLeafSimScorer.getNormValue(XMultiNormsLeafSimScorer.java:91) ~[elasticsearch-7.13.1.jar:8.8.2 a92a05e195b775b30ca410bc0a26e8e79e7b3bfb - mdrob - 2021-04-06 16:33:27] at org.apache.lucene.search.XMultiNormsLeafSimScorer.score(XMultiNormsLeafSimScorer.java:103) ~[elasticsearch-7.13.1.jar:8.8.2 a92a05e195b775b30ca410bc0a26e8e79e7b3bfb - mdrob - 2021-04-06 16:33:27] at org.apache.lucene.search.XCombinedFieldQuery$CombinedFieldScorer.score(XCombinedFieldQuery.java:453) ~[elasticsearch-7.13.1.jar:8.8.2 a92a05e195b775b30ca410bc0a26e8e79e7b3bfb - mdrob - 2021-04-06 16:33:27] at org.apache.lucene.search.TopScoreDocCollector$SimpleTopScoreDocCollector$1.collect(TopScoreDocCollector.java:76) ~[lucene-core-8.8.2.jar:8.8.2 a92a05e195b775b30ca410bc0a26e8e79e7b3bfb - mdrob - 2021-04-06 16:33:27] at org.apache.lucene.search.Weight$DefaultBulkScorer.scoreRange(Weight.java:252) ~[lucene-core-8.8.2.jar:8.8.2 a92a05e195b775b30ca410bc0a26e8e79e7b3bfb - mdrob - 2021-04-06 16:33:27] at org.apache.lucene.search.Weight$DefaultBulkScorer.score(Weight.java:239) ~[lucene-core-8.8.2.jar:8.8.2 a92a05e195b775b30ca410bc0a26e8e79e7b3bfb - mdrob - 2021-04-06 16:33:27] at org.elasticsearch.search.internal.CancellableBulkScorer.score(CancellableBulkScorer.java:45) ~[elasticsearch-7.13.1.jar:7.13.1] at org.apache.lucene.search.BulkScorer.score(BulkScorer.java:39) ~[lucene-core-8.8.2.jar:8.8.2 a92a05e195b775b30ca410bc0a26e8e79e7b3bfb - mdrob - 2021-04-06 16:33:27] at org.elasticsearch.search.internal.ContextIndexSearcher.searchLeaf(ContextIndexSearcher.java:187) ~[elasticsearch-7.13.1.jar:7.13.1] at org.elasticsearch.search.internal.ContextIndexSearcher.search(ContextIndexSearcher.java:160) ~[elasticsearch-7.13.1.jar:7.13.1] at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:445) ~[lucene-core-8.8.2.jar:8.8.2 a92a05e195b775b30ca410bc0a26e8e79e7b3bfb - mdrob - 2021-04-06 16:33:27] at org.elasticsearch.search.query.QueryPhase.searchWithCollector(QueryPhase.java:332) ~[elasticsearch-7.13.1.jar:7.13.1] at org.elasticsearch.search.query.QueryPhase.executeInternal(QueryPhase.java:287) ~[elasticsearch-7.13.1.jar:7.13.1] at org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:139) ~[elasticsearch-7.13.1.jar:7.13.1] at org.elasticsearch.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:368) ~[elasticsearch-7.13.1.jar:7.13.1] at org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:422) ~[elasticsearch-7.13.1.jar:7.13.1] at org.elasticsearch.search.SearchService.lambda$executeQueryPhase$2(SearchService.java:394) ~[elasticsearch-7.13.1.jar:7.13.1] at org.elasticsearch.action.ActionRunnable.lambda$supply$0(ActionRunnable.java:47) ~[elasticsearch-7.13.1.jar:7.13.1] at org.elasticsearch.action.ActionRunnable$2.doRun(ActionRunnable.java:62) ~[elasticsearch-7.13.1.jar:7.13.1] at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:26) ~[elasticsearch-7.13.1.jar:7.13.1] ... 6 more

It is really weird and I cannot seem to spot the cause, since:

  1. If I use other (random) queries, the query either succeeds or fails with the same exception
  2. If I omit the "title" field, the query succeeds,
  3. If I omit the "description" field, the query succeeds

Please note that this is definitely a combined_fields issue, since changing the query type to multi_match cross_fields makes it work properly.

This seems to be a Lucene issue, but I have no further idea.

@jtibshirani I suppose you might be interested in this one

Metadata

Metadata

Assignees

Labels

:Search/SearchSearch-related issues that do not fall into other categories>bugTeam:SearchMeta label for search team

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions