Fielddata is disabled on text fields by default. Set fielddata=true on [usrName]

使用spring boot+ElasticSearch做数据聚合时,报了该异常:

Fielddata is disabled on text fields by default. Set fielddata=true on [usrName]

用来做聚合的代码

TermsAggregationBuilder termsAggregation = AggregationBuilders.terms("user_name").field("usrName");

这段代码的效果类似sql的group by

这里我用的是usrName字段来做聚合,而用来做聚合的字段类型不能是Text
在这里插入图片描述

解决方法:可以把类型改成Keyword
在这里插入图片描述

这样usrName字段就可以支持聚合功能了

不过如果业务要求usrName字段既要做聚合,又要能分词,然后进行索引

那么可以搞两个usrName字段,同时两个字段的值是一样的
在这里插入图片描述
这样聚合用userName2字段

TermsAggregationBuilder termsAggregation = AggregationBuilders.terms("user_name").field("usrName2");

同时也能支持usrName字段的分词索引。

发布了136 篇原创文章 · 获赞 109 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_38106322/article/details/103925092