使用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字段的分词索引。