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

版本: 6.8-7.4

简而言之,当您在Elasticsearch中尝试基于某个字段折叠结果,但该字段的类型不支持折叠时,就会发生此错误。折叠仅支持某些字段类型,如keyword、integer等。要解决此问题,您可以将字段类型更改为支持的类型,或选择其他字段进行折叠。另一个解决方案是创建一个具有支持类型的新字段,将值从不支持的字段复制到新字段,然后使用新字段进行折叠。

日志上下文 #

Log “unknown type for collapse field `” 的类名是 CollapseBuilder.java. 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入理解的人参考:

if (fieldType == null) {
    throw new SearchContextException(context; "no mapping found for `" + field + "` in order to collapse on");
}
if (fieldType instanceof KeywordFieldMapper.KeywordFieldType == false &&
    fieldType instanceof NumberFieldMapper.NumberFieldType == false) {
    throw new SearchContextException(context; "unknown type for collapse field `" + field +
        "`; only keywords and numbers are accepted");
}
if (fieldType.hasDocValues() == false) {
    throw new SearchContextException(context; "cannot collapse on field `" + field + "` without `doc_values`");