--- title: "当设置搜索分析器时必须为字段设置分析器 - 如何解决此Elasticsearch异常" date: 2026-01-07 lastmod: 2026-01-07 description: "当在Elasticsearch中为字段设置'search_analyzer'而没有为同一字段设置'analyzer'时,会发生此错误。Elasticsearch要求同时设置两者以确保索引和搜索的一致性。" tags: ["映射错误", "分析器配置", "字段映射", "搜索分析器"] summary: " 版本: 6.8-7.9 简要地说,当在Elasticsearch中为字段设置了’search_analyzer’而没有为同一字段设置’analyzer’时,就会发生此错误。Elasticsearch要求同时设置两者,以确保索引和搜索的一致性。要解决此问题,您可以为字段设置’analyzer',或者如果不需要’search_analyzer',可以将其删除。或者,如果您希望索引和搜索使用相同的分析过程,可以将’analyzer’和’search_analyzer’设置为相同的值。 日志上下文 # 日志"analyzer on field [" + name + “] must be set when search_analyzer is set"的类名是 TypeParsers.java。我们从Elasticsearch源代码中提取了以下内容,供那些寻求深入了解上下文的人参考: searchQuoteAnalyzer.checkAllowedInMode(AnalysisMode.SEARCH_TIME); } } 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"); " --- > **版本:** 6.8-7.9 简要地说,当在Elasticsearch中为字段设置了'search_analyzer'而没有为同一字段设置'analyzer'时,就会发生此错误。Elasticsearch要求同时设置两者,以确保索引和搜索的一致性。要解决此问题,您可以为字段设置'analyzer',或者如果不需要'search_analyzer',可以将其删除。或者,如果您希望索引和搜索使用相同的分析过程,可以将'analyzer'和'search_analyzer'设置为相同的值。 日志上下文 ----------- 日志"analyzer on field [" + name + "] must be set when search_analyzer is set"的类名是[TypeParsers.java](https://www.geeksforgeeks.org/java-lang-class-class-java-set-1/)。我们从Elasticsearch源代码中提取了以下内容,供那些寻求深入了解上下文的人参考: ```java searchQuoteAnalyzer.checkAllowedInMode(AnalysisMode.SEARCH_TIME); } } 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"); ```