Can't load fielddata on [xxx] because fielddata is unsupported on fields of type [keyword]. Use doc values instead.

1,背景

ElasticSearch在聚合查询时,出现如下错误

"root_cause": [
    {
        "type": "illegal_argument_exception",
        "reason": "Can't load fielddata on [brandName] because fielddata is unsupported on fields of type [keyword]. Use doc values instead."
    }
]

2,原因

查看DSL查询索引的映射:

GET /your_index/_mappingc

查看结果如下

image

 释义:

type 表示这个字段的类型,keyword表明这个字段是一个关键词类型。关键词类型适用于全文搜索、精确值匹配等场景。关键词字段不会被分词(tokenized),适合用于精确匹配查询。
index false表示这个字段不会被索引,即这个字段不会出现在Elasticsearch的倒排索引中。仅用于排序、聚合或者脚本计算的字段,但不参与搜索查询的字段。如,查询不需要基于brandName进行搜索,但需要基于这个字段进行排序或聚合,可以设置index: false
doc_values true表示支持对这个字段进行排序或聚合操作。ElasticSearch默认会为所有非文本类型的字段启动doc_values;文本类型的字段默认不会启动doc_values,除非显示设置。

brandName 既不支持搜索也不支持聚合,在DSL语句中对brandName做聚合操作或出现上述问题。

image

3,解决

重新设置映射配置,将brandName对应的index和doc_values删除即可

image

 

posted @ 2026-03-16 19:04  无虑的小猪  阅读(2)  评论(0)    收藏  举报