--- title: "字段上的analyzer和search_analyzer – 如何解决此Elasticsearch异常" date: 2026-02-21 lastmod: 2026-02-21 description: "当在Elasticsearch的同一字段上同时定义'analyzer'和'search_analyzer'时会报错。Elasticsearch使用'analyzer'进行索引,使用'search_analyzer'进行搜索。如果两者都定义,可能会导致冲突。" tags: ["分析器", "搜索分析器", "映射解析异常", "字段配置"] summary: " 版本: 6.8-7.9 简而言之,当在Elasticsearch的同一字段上同时定义’analyzer’和’search_analyzer’时,会出现此错误。Elasticsearch使用’analyzer’进行索引,使用’search_analyzer’进行搜索。如果两者都定义,可能会导致冲突。要解决此问题,您可以删除其中一个,或确保它们设置为兼容的值。如果您希望索引和搜索有不同的行为,可以考虑使用’analyzer’进行索引,使用’search_analyzer’进行搜索,但确保它们兼容以避免意外结果。 日志上下文 # 日志"analyzer and search_analyzer on field [“的类名是 TypeParsers.java。我们从Elasticsearch源代码中提取了以下内容,为那些寻求深入上下文的人提供参考: if (indexAnalyzer == null && searchAnalyzer != null) { throw new MapperParsingException("analyzer on field [" + name + "] must be set when search_analyzer is set"); } if (searchAnalyzer == null && searchQuoteAnalyzer != null) { throw new MapperParsingException("analyzer and search_analyzer on field [" + name + "] must be set when search_quote_analyzer is set"); } if (searchAnalyzer == null) { searchAnalyzer = indexAnalyzer; " --- > **版本:** 6.8-7.9 简而言之,当在Elasticsearch的同一字段上同时定义'analyzer'和'search_analyzer'时,会出现此错误。Elasticsearch使用'analyzer'进行索引,使用'search_analyzer'进行搜索。如果两者都定义,可能会导致冲突。要解决此问题,您可以删除其中一个,或确保它们设置为兼容的值。如果您希望索引和搜索有不同的行为,可以考虑使用'analyzer'进行索引,使用'search_analyzer'进行搜索,但确保它们兼容以避免意外结果。 ## 日志上下文 日志"analyzer and search_analyzer on field ["的类名是[TypeParsers.java](https://www.geeksforgeeks.org/java-lang-class-class-java-set-1/)。我们从Elasticsearch源代码中提取了以下内容,为那些寻求深入上下文的人提供参考: ```java if (indexAnalyzer == null && searchAnalyzer != null) { throw new MapperParsingException("analyzer on field [" + name + "] must be set when search_analyzer is set"); } if (searchAnalyzer == null && searchQuoteAnalyzer != null) { throw new MapperParsingException("analyzer and search_analyzer on field [" + name + "] must be set when search_quote_analyzer is set"); } if (searchAnalyzer == null) { searchAnalyzer = indexAnalyzer; ```