Avoid internal server error on suggester ngram bad request#132321
Merged
carlosdelest merged 6 commits intoelastic:mainfrom Aug 1, 2025
Merged
Conversation
…nnelSpellChecker, so we get a bad request instead of an internal server error
Collaborator
|
Hi @carlosdelest, I've created a changelog YAML for you. |
…tokens-unigrams-response
Collaborator
|
Pinging @elastic/es-search-relevance (Team:Search Relevance) |
iverase
approved these changes
Aug 1, 2025
Contributor
iverase
left a comment
There was a problem hiding this comment.
LGTM
If an analyzer that only produces n-grams (no unigrams) is used,
I guess we don't know this before executing the suggested so we can fail early.
szybia
added a commit
to szybia/elasticsearch
that referenced
this pull request
Aug 1, 2025
…cking * upstream/main: (166 commits) Reduce inactive sink interval in VectorSimilarityFunctionsIT (elastic#132288) ESQL: Allow agg tests to process many columns (elastic#132358) Update analysis-lowercase-tokenfilter.md (elastic#132359) Add Sparse Vector Index Options Settings to Semantic Text Field (elastic#131058) Collect node thread pool usage for shard balancing (elastic#131480) Add tasks to validate new style transport versions (elastic#131782) Mute org.elasticsearch.search.routing.SearchReplicaSelectionIT testNodeSelection elastic#132354 Mute org.elasticsearch.xpack.esql.action.CrossClusterAsyncQueryIT testBadAsyncId elastic#132353 Fixes DenseVectorFieldIndexTypeUpdateIT release tests (elastic#132346) Fix testCloseOrReallocateDuringPartialSnapshot (elastic#132049) (Doc) ILM Force Merge not on HDD and happens on hosting node not current phase tier (elastic#130280) Run GeoIp YAML tests in multi-project cluster and fix bug discovered by tests (elastic#131521) Unmutes elastic#132111, seems a transient, non reproducible issue (elastic#132253) Mute org.elasticsearch.search.suggest.phrase.PhraseSuggesterIT testPhraseSuggestionWithNgramOnlyAnalyzerThrowsException elastic#132347 Add AI21 support to Inference Plugin (elastic#131238) OpenJDK EA builds should use https instead of http (elastic#132297) ESQL: Normalize timeseries aggs slightly (elastic#132284) Avoid internal server error on suggester ngram bad request (elastic#132321) [ES|QL] Rerank operator improvements (elastic#132318) Mute org.elasticsearch.xpack.logsdb.qa.LogsDbVersusReindexedLogsDbChallengeRestIT testTermsQuery elastic#132337 ...
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A phrase suggester by default is configured to require unigrams. If an analyzer that only produces n-grams (no unigrams) is used, we get an internal server error as a response (due to
NoisyChannelSpellCheckerthrowing anIllegalStateException).This is a configuration problem, not a server error. The user used an analyzer that does not provide unigrams, but unigrams are required for the suggestion.
This PR makes
NoisyChannelSpellCheckerthrow anIllegalArgumentExceptioninstead, so a shard failure is returned. It also adds an IT to check it works as expected.Closes #131928