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
查看结果如下

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

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


浙公网安备 33010602011771号