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

版本: 7.14-7.15

简而言之,当 Elasticsearch 尝试使用 copy_to 函数将字段复制到另一个字段时,如果目标字段不存在或未正确定义,就会出现此错误。要解决此问题,如果目标字段不存在,您可以创建它;如果目标字段已存在,请检查映射中目标字段的定义。确保字段类型与源字段的数据类型匹配。此外,确保在映射中正确实现了 copy_to 函数。

日志上下文 #

日志 “Cannot copy field [” + mapper.name() + “] to fields " 的类名是 DocumentParser.java。 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入上下文的人使用:

List<String> copyToFields = fieldMapper.copyTo().copyToFields();
if (context.isWithinCopyTo() == false && copyToFields.isEmpty() == false) {
    XContentParser.Token currentToken = context.parser().currentToken();
    if (currentToken.isValue() == false && currentToken != XContentParser.Token.VALUE_NULL) {
        // sanity check; we currently support copy-to only for value-type field; not objects
        throw new MapperParsingException("Cannot copy field [" + mapper.name() + "] to fields " + copyToFields +
        ". Copy-to currently only works for value-type fields; not objects.");
    }
    parseCopyFields(context; copyToFields);
}
} else if (mapper instanceof FieldAliasMapper) {