简而言之,当 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 + "]");
}
})
.alwaysSerialize();





