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

版本: 6.8-7.1

简而言之,当在 Elasticsearch 的多字段(multi-field)中使用 “copy_to” 参数时,会出现此错误。这是不被允许的,因为多字段的目的是为单个字段提供不同的分析方式,而不是用于复制数据。

要解决此问题,您可以从多字段中删除 “copy_to” 参数。或者,您可以在多字段之外创建一个单独的字段,并在那里使用 “copy_to” 参数。

日志上下文 #

日志 “copy_to in multi fields is not allowed. Found the copy_to in field [" + name + “] ” 的类名是 TypeParsers.java。我们从 Elasticsearch 源代码中提取了以下内容,供那些需要深入了解上下文的人参考:

iterator.remove();
} else if (parseMultiField(builder::addMultiField, name, parserContext, propName, propNode)) {
    iterator.remove();
} else if (propName.equals("copy_to")) {
    if (parserContext.isWithinMultiField()) {
        throw new MapperParsingException("copy_to in multi fields is not allowed. Found the copy_to in field [" + name + "] " +
            "which is within a multi field.");
    } else {
        List copyFields = parseCopyFields(propNode);
        FieldMapper.CopyTo.Builder cpBuilder = new FieldMapper.CopyTo.Builder();
        copyFields.forEach(cpBuilder::add);