--- title: "Max shingle size 必须至少为 – 如何解决此 Elasticsearch 异常" date: 2026-02-10 lastmod: 2026-02-10 description: "Elasticsearch 中 max_shingle_size 参数值小于 2 时会抛出此异常,本文介绍如何解决该问题。" tags: ["Elasticsearch异常", "Shingle Token Filter", "Mapper Parsing Exception", "配置错误"] summary: "简而言之,当 Elasticsearch 中为 ‘max_shingle_size’ 参数设置的值小于 2 时,就会发生此错误。‘max_shingle_size’ 参数用于控制 shingle token filter 的最大 shingle 大小。要解决此问题,您可以将 ‘max_shingle_size’ 值增加到 2 或更大,或者如果您的用例不需要 ‘max_shingle_size’ 参数,可以将其删除。在应用设置之前,务必确保验证您的设置,以避免此类错误。 日志上下文 # 日志 “[max_shingle_size] must be at least [” 类名是 SearchAsYouTypeFieldMapper.java。我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入上下文的人使用: private final ParametermaxShingleSize = Parameter.intParam("max_shingle_size"; false; m -> builder(m).maxShingleSize.get(); Defaults.MAX_SHINGLE_SIZE) .setValidator(v -> { if (v < MAX_SHINGLE_SIZE_LOWER_BOUND || v > MAX_SHINGLE_SIZE_UPPER_BOUND) { throw new MapperParsingException("[max_shingle_size] must be at least [" + MAX_SHINGLE_SIZE_LOWER_BOUND + "] and at most " + "[" + MAX_SHINGLE_SIZE_UPPER_BOUND + "]; got [" + v + "]"); } }) ." --- 简而言之,当 Elasticsearch 中为 'max_shingle_size' 参数设置的值小于 2 时,就会发生此错误。'max_shingle_size' 参数用于控制 shingle token filter 的最大 shingle 大小。要解决此问题,您可以将 'max_shingle_size' 值增加到 2 或更大,或者如果您的用例不需要 'max_shingle_size' 参数,可以将其删除。在应用设置之前,务必确保验证您的设置,以避免此类错误。 ## 日志上下文 ----------- 日志 "[max\_shingle\_size] must be at least [" 类名是 [SearchAsYouTypeFieldMapper.java](https://www.geeksforgeeks.org/java-lang-class-class-java-set-1/)。我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入上下文的人使用: ```java private final ParametermaxShingleSize = Parameter.intParam("max_shingle_size"; false; m -> builder(m).maxShingleSize.get(); Defaults.MAX_SHINGLE_SIZE) .setValidator(v -> { if (v < MAX_SHINGLE_SIZE_LOWER_BOUND || v > MAX_SHINGLE_SIZE_UPPER_BOUND) { throw new MapperParsingException("[max_shingle_size] must be at least [" + MAX_SHINGLE_SIZE_LOWER_BOUND + "] and at most " + "[" + MAX_SHINGLE_SIZE_UPPER_BOUND + "]; got [" + v + "]"); } }) .alwaysSerialize(); ```