Skip to content

FieldValueFactorFunction should return bad_request when fields are missing #127162

@benwtrent

Description

@benwtrent

Elasticsearch Version

9.1+

Installed Plugins

No response

Java Version

bundled

OS Version

any

Problem Description

FieldValueFactorFunction should return bad_request when fields are missing, not a 5xx.

Steps to Reproduce

N/A

Logs (if relevant)

org.elasticsearch.search.query.QueryPhaseExecutionException: Query Failed [Failed to execute main query]
	at org.elasticsearch.server@9.1.0/org.elasticsearch.search.query.QueryPhase.addCollectorsAndSearch(QueryPhase.java:237)
	at org.elasticsearch.server@9.1.0/org.elasticsearch.search.query.QueryPhase.executeQuery(QueryPhase.java:143)
	at org.elasticsearch.server@9.1.0/org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:70)
	at org.elasticsearch.server@9.1.0/org.elasticsearch.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:668)
	at org.elasticsearch.server@9.1.0/org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:873)
	at org.elasticsearch.server@9.1.0/org.elasticsearch.search.SearchService.lambda$executeQueryPhase$7(SearchService.java:706)
	at org.elasticsearch.server@9.1.0/org.elasticsearch.action.ActionRunnable$3.accept(ActionRunnable.java:79)
	at org.elasticsearch.server@9.1.0/org.elasticsearch.action.ActionRunnable$3.accept(ActionRunnable.java:76)
	at org.elasticsearch.server@9.1.0/org.elasticsearch.action.ActionRunnable$4.doRun(ActionRunnable.java:101)
	at org.elasticsearch.server@9.1.0/org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:27)
	at org.elasticsearch.server@9.1.0/org.elasticsearch.common.util.concurrent.TimedRunnable.doRun(TimedRunnable.java:34)
	at org.elasticsearch.server@9.1.0/org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:1044)
	at org.elasticsearch.server@9.1.0/org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:27)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1095)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:619)
	at java.base/java.lang.Thread.run(Thread.java:1447)
Caused by: org.elasticsearch.ElasticsearchException: Missing value for field [<FIELD_NAME>]
	at org.elasticsearch.server@9.1.0/org.elasticsearch.common.lucene.search.function.FieldValueFactorFunction$1.score(FieldValueFactorFunction.java:76)
	at org.elasticsearch.server@9.1.0/org.elasticsearch.common.lucene.search.function.FunctionScoreQuery$FunctionFactorScorer.computeScore(FunctionScoreQuery.java:462)
	at org.elasticsearch.server@9.1.0/org.elasticsearch.common.lucene.search.function.FunctionScoreQuery$FunctionFactorScorer.score(FunctionScoreQuery.java:444)
	at org.apache.lucene.core@10.2.0/org.apache.lucene.search.ScoreCachingWrappingScorer.score(ScoreCachingWrappingScorer.java:86)
	at org.apache.lucene.core@10.2.0/org.apache.lucene.search.FieldComparator$RelevanceComparator.compareBottom(FieldComparator.java:159)
	at org.apache.lucene.core@10.2.0/org.apache.lucene.search.MultiLeafFieldComparator.compareBottom(MultiLeafFieldComparator.java:53)
	at org.apache.lucene.core@10.2.0/org.apache.lucene.search.TopFieldCollector$TopFieldLeafCollector.thresholdCheck(TopFieldCollector.java:89)
	at org.apache.lucene.core@10.2.0/org.apache.lucene.search.TopFieldCollector$SimpleFieldCollector$1.collect(TopFieldCollector.java:202)
	at org.apache.lucene.core@10.2.0/org.apache.lucene.search.FilterLeafCollector.collect(FilterLeafCollector.java:42)
	at org.apache.lucene.core@10.2.0/org.apache.lucene.search.ScoreCachingWrappingScorer$ScoreCachingWrappingLeafCollector.collect(ScoreCachingWrappingScorer.java:69)
	at org.apache.lucene.core@10.2.0/org.apache.lucene.search.Weight$DefaultBulkScorer.scoreTwoPhaseIterator(Weight.java:312)
	at org.apache.lucene.core@10.2.0/org.apache.lucene.search.Weight$DefaultBulkScorer.score(Weight.java:282)
	at org.elasticsearch.server@9.1.0/org.elasticsearch.search.internal.CancellableBulkScorer.score(CancellableBulkScorer.java:46)
	at org.elasticsearch.server@9.1.0/org.elasticsearch.search.internal.ContextIndexSearcher.searchLeaf(ContextIndexSearcher.java:460)
	at org.apache.lucene.core@10.2.0/org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:809)
	at org.elasticsearch.server@9.1.0/org.elasticsearch.search.internal.ContextIndexSearcher.search(ContextIndexSearcher.java:387)
	at org.elasticsearch.server@9.1.0/org.elasticsearch.search.internal.ContextIndexSearcher.lambda$search$3(ContextIndexSearcher.java:365)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:328)
	at org.apache.lucene.core@10.2.0/org.apache.lucene.search.TaskExecutor$Task.run(TaskExecutor.java:173)
	at org.apache.lucene.core@10.2.0/org.apache.lucene.search.TaskExecutor.invokeAll(TaskExecutor.java:111)
	at org.elasticsearch.server@9.1.0/org.elasticsearch.search.internal.ContextIndexSearcher.search(ContextIndexSearcher.java:369)
	at org.elasticsearch.server@9.1.0/org.elasticsearch.search.internal.ContextIndexSearcher.search(ContextIndexSearcher.java:336)
	at org.elasticsearch.server@9.1.0/org.elasticsearch.search.query.QueryPhase.addCollectorsAndSearch(QueryPhase.java:212)
	... 15 more

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions