Skip to content

EOF with boolean query in ES 9.0.x #135718

@benwtrent

Description

@benwtrent

Elasticsearch Version

9.0.x

Installed Plugins

No response

Java Version

bundled

OS Version

any

Problem Description

Lucene 10.1.0 on ES 9.0.x exhibits EOF for certain queries.

In particular, it must be a boolean query with a multi-claused must_not disjunction.

Steps to Reproduce

N/A (yet)

Here is an example query:

        {
          "bool": {
            "filter": [
              {
                "bool": {
                  "filter": [
                    "< multiple term clauses>"
                  ],
                  "must_not": [
                    {
                      "terms": {
                        "<field>": [
                          "<many_values>"
                        ]
                      }
                    },
                    {
                      "terms": {
                        "<field>": [
                          "<many_values>"
                        ]
                      }
                    },
                    {
                      "term": {
                        "<field>": {
                          "value": "<value>"
                        }
                      }
                    },
                    {
                      "terms": {
                        "<field>": [
                          "<many_values>"
                        ]
                      }
                    }
                  ]
                }
              }
            ],
            "must": {
              "query": {
                "multi_match": {
                  "fields": [
                    "<many_fields>"
                  ],
                  "minimum_should_match": "custom should match",
                  "query": "<QUERY>",
                  "type": "most_fields"
                }
              }
            }
          }
        }

Logs (if relevant)

Caused by: java.io.EOFException: read past EOF (pos=2147483647): MemorySegmentIndexInput(path="<PATH>.cfs") [slice=_ou.nvd] [slice=randomaccess]
	at org.apache.lucene.core@10.1.0/org.apache.lucene.store.MemorySegmentIndexInput.handlePositionalIOOBE(MemorySegmentIndexInput.java:119)
	at org.apache.lucene.core@10.1.0/org.apache.lucene.store.MemorySegmentIndexInput$SingleSegmentImpl.readByte(MemorySegmentIndexInput.java:762)
	at org.apache.lucene.core@10.1.0/org.apache.lucene.codecs.lucene90.Lucene90NormsProducer$3.longValue(Lucene90NormsProducer.java:399)
	at org.apache.lucene.core@10.1.0/org.apache.lucene.search.TermScorer.score(TermScorer.java:93)
	at org.apache.lucene.core@10.1.0/org.apache.lucene.search.DisjunctionSumScorer.score(DisjunctionSumScorer.java:43)
	at org.apache.lucene.core@10.1.0/org.apache.lucene.search.DisjunctionScorer.score(DisjunctionScorer.java:176)
	at org.apache.lucene.core@10.1.0/org.apache.lucene.search.FilterScorable.score(FilterScorable.java:45)
	at org.apache.lucene.core@10.1.0/org.apache.lucene.search.MaxScoreBulkScorer.scoreNonEssentialClauses(MaxScoreBulkScorer.java:402)
	at org.apache.lucene.core@10.1.0/org.apache.lucene.search.MaxScoreBulkScorer.scoreInnerWindowWithFilter(MaxScoreBulkScorer.java:208)
	at org.apache.lucene.core@10.1.0/org.apache.lucene.search.MaxScoreBulkScorer.scoreInnerWindow(MaxScoreBulkScorer.java:147)
	at org.apache.lucene.core@10.1.0/org.apache.lucene.search.MaxScoreBulkScorer.score(MaxScoreBulkScorer.java:128)
	at org.apache.lucene.core@10.1.0/org.apache.lucene.search.ReqExclBulkScorer.score(ReqExclBulkScorer.java:66)
	at org.elasticsearch.server@9.0.3/org.elasticsearch.search.internal.CancellableBulkScorer.score(CancellableBulkScorer.java:46)
	at org.elasticsearch.server@9.0.3/org.elasticsearch.search.internal.ContextIndexSearcher.searchLeaf(ContextIndexSearcher.java:461)
	at org.apache.lucene.core@10.1.0/org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:810)
	at org.elasticsearch.server@9.0.3/org.elasticsearch.search.internal.ContextIndexSearcher.search(ContextIndexSearcher.java:388)
	at org.elasticsearch.server@9.0.3/org.elasticsearch.search.internal.ContextIndexSearcher.lambda$search$3(ContextIndexSearcher.java:368)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:328)
	at org.apache.lucene.core@10.1.0/org.apache.lucene.search.TaskExecutor$Task.run(TaskExecutor.java:173)
	at org.apache.lucene.core@10.1.0/org.apache.lucene.search.TaskExecutor.invokeAll(TaskExecutor.java:111)
	at org.elasticsearch.server@9.0.3/org.elasticsearch.search.internal.ContextIndexSearcher.search(ContextIndexSearcher.java:372)
	at org.elasticsearch.server@9.0.3/org.elasticsearch.search.internal.ContextIndexSearcher.search(ContextIndexSearcher.java:339)
	at org.elasticsearch.server@9.0.3/org.elasticsearch.search.query.QueryPhase.addCollectorsAndSearch(QueryPhase.java:212)
	... 15 more

Metadata

Metadata

Assignees

No one assigned

    Labels

    :Search/SearchSearch-related issues that do not fall into other categories>bugTeam:SearchMeta label for search teampriority:highA label for assessing bug priority to be used by ES engineers

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions