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

简而言之,当 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();