📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

版本: 6.8-7.9

简而言之,当在Elasticsearch的completion字段上设置了search_analyzer而没有设置analyzer时,会出现此错误。completion字段是Elasticsearch中的一种建议器(suggester)类型,它需要同时设置analyzer和search_analyzer才能正常工作。要解决此问题,如果不需要search_analyzer,可以将其删除;或者在completion字段上设置analyzer。analyzer会在索引之前处理文本,而search_analyzer会在搜索查询期间处理文本。

日志上下文 #

日志 “analyzer on completion field [” + name + “] must be set when search_analyzer is set” 的类名是 CompletionFieldMapper.java。 我们从Elasticsearch源代码中提取了以下内容,供那些寻求深入了解上下文的人参考:

}
 }  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;
 }