Analyzer on completion field name must be set when search analyzer is set – How to solve this Elasticsearch exception

Opster Team

August-23, Version: 6.8-7.9

Briefly, this error occurs when a search_analyzer is set on a completion field in Elasticsearch without setting an analyzer. The completion field is a type of suggester in Elasticsearch, and it requires both an analyzer and a search_analyzer to function properly. To resolve this issue, you can either remove the search_analyzer if it’s not needed, or set an analyzer on the completion field. The analyzer will process the text before indexing, while the search_analyzer will process the text during the search query.

This guide will help you check for common problems that cause the log ” analyzer on completion field [” + name + “] must be set when search_analyzer is set ” to appear. To understand the issues related to this log, read the explanation below about the following Elasticsearch concepts: index.

Log Context

Log “analyzer on completion field [” + name + “] must be set when search_analyzer is set” class name is CompletionFieldMapper.java. We extracted the following from Elasticsearch source code for those seeking an in-depth context :

 }
 }  if (indexAnalyzer == null) {
 if (searchAnalyzer != null) {
 throw new MapperParsingException("analyzer on completion field [" + name + "] must be set when search_analyzer is set");
 }
 indexAnalyzer = searchAnalyzer = parserContext.getIndexAnalyzers().get("simple");
 } else if (searchAnalyzer == null) {
 searchAnalyzer = indexAnalyzer;
 }

 

 [ratemypost]