public  class  ChemicalES  { @IndexId ( type =  IdType . CUSTOMIZE ) private  Long  id; @HighLight @IndexField ( fieldType =  FieldType . TEXT ,   analyzer =  "ik_max_word" ) private  String  name; @IndexField ( fieldType =  FieldType . KEYWORD ) private  List < String > ; 
} 
 
[ 
{ key:'化肥' ,value:2} ,
{ key:'农药' ,value:1} ,
{ key:'尿素' ,value:2} ,
] 
 
 
    @Autowired public  RestHighLevelClient  restHighLevelClient; private  List < Map < Object , Object > > commonGroup (  String  indexName,  MultiMatchQueryBuilder  multiMatchQuery, String  fieldName, String  fieldNameAs)  throws  IOException  { SearchRequest  request =  new  SearchRequest ( ) ; request. indices ( indexName) ; SearchSourceBuilder  builder =  new  SearchSourceBuilder ( ) ; builder. size ( 0 ) ; AggregationBuilder  aggregationBuilder =  AggregationBuilders . terms ( fieldNameAs) . field ( fieldName) . order ( BucketOrder . count ( false ) ) ; builder. aggregation ( aggregationBuilder) ; if ( multiMatchQuery !=  null ) { builder. query ( multiMatchQuery) ; } request. source ( builder) ; SearchResponse  response =  restHighLevelClient. search ( request,  RequestOptions . DEFAULT ) ; Aggregations  aggregations =  response. getAggregations ( ) ; ParsedStringTerms  colorGroup =  aggregations. get ( fieldNameAs) ; List < ?  extends  Terms. Bucket > =  colorGroup. getBuckets ( ) ; List < Map < Object , Object > > =  new  ArrayList < > ( ) ; for  ( Terms. Bucket  bucket :  buckets)  { Map < Object , Object > = new  HashMap < > ( 2 ) ; System . out. println ( "name:"  +  bucket. getKey ( )  +  ","  +  "count:"  +  bucket. getDocCount ( ) ) ; map. put ( "name" , bucket. getKey ( ) ) ; map. put ( "count" , bucket. getDocCount ( ) ) ; result. add ( map) ; } return  result; }