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

版本: 6.8-7.15

简而言之,当 Elasticsearch 在某个字段的 [fields] 属性上期望一个映射(键值对),但没有找到时,就会出现此错误。这通常是由于查询中的错误数据结构或语法导致的。要解决此问题,你可以:1)检查你的查询,确保 [fields] 属性正确格式化为映射。2)检查字段是否存在于你的索引中。3)如果你将字段用于聚合或排序,确保该字段未被分析。4)如果字段类型不正确,更新你的映射。

日志上下文 #

日志 “expected map for property [fields] on field [” + propNode + “] or ” 的类名是 TypeParsers.java。我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入背景的人参考:

if (propNode instanceof List && ((List) propNode).isEmpty()) {
    multiFieldsPropNodes = Collections.emptyMap();
} else if (propNode instanceof Map) {
    multiFieldsPropNodes = (Map) propNode;
} else {
    throw new MapperParsingException("expected map for property [fields] on field [" + propNode + "] or " +
        "[" + propName + "] but got a " + propNode.getClass());
}
for (Map.Entry multiFieldEntry : multiFieldsPropNodes.entrySet()) {
    String multiFieldName = multiFieldEntry.getKey();