机械行业网站建设制作开发方案,国外wordpress主机,淘宝网站运营的工作怎么做,著名优秀产品设计案例[数据库]es~通过ElasticsearchTemplate进行聚合操作02020-08-24 17:00:38聚合操作#xff0c;我们可以对数据进行分组的求和#xff0c;求数#xff0c;最大值#xff0c;最小值#xff0c;或者其它的自定义的统计功能#xff0c;es对聚合有着不错的支持#xff0c;需要…[数据库]es~通过ElasticsearchTemplate进行聚合操作02020-08-24 17:00:38聚合操作我们可以对数据进行分组的求和求数最大值最小值或者其它的自定义的统计功能es对聚合有着不错的支持需要注意的是在对某字段进行聚合之后需要开启这个字段的fielddata我或者会出现如下错误Fielddata is disabled on text fields by default.通过postman等工作像es api发送请求可以将字段的这个特性打开.PUT /esdto/esdto/_mapping{ properties: { sex: { type: text, fielddata: true } }}使用ElasticsearchTemplate对sex字段进行聚合// 创建一个查询条件对象 BoolQueryBuilder queryBuilder QueryBuilders.boolQuery(); // 拼接查询条件 queryBuilder.should(QueryBuilders.termQuery(creator, 1)); // 创建聚合查询条件 TermsAggregationBuilder agg AggregationBuilders.terms(sex).field(sex.keyword);//keyword表示不使用分词进行聚合 // 创建查询对象 SearchQuery build new NativeSearchQueryBuilder() .withQuery(queryBuilder) //添加查询条件 .addAggregation(agg) // 添加聚合条件 .withPageable(PageRequest.of(0, 10)) //符合查询条件的文档分页(不是聚合的分页) .build(); // 执行查询 AggregatedPage testEntities elasticsearchTemplate.queryForPage(build, TestEsDto.class); // 取出聚合结果 Aggregations entitiesAggregations testEntities.getAggregations(); Terms terms (Terms) entitiesAggregations.asMap().get(sex); // 遍历取出聚合字段列的值与对应的数量 for (Terms.Bucket bucket : terms.getBuckets()) { String keyAsString bucket.getKeyAsString(); // 聚合字段列的值 long docCount bucket.getDocCount();// 聚合字段对应的数量 log.info(keyAsString{},value{}, keyAsString, docCount); }本文网址http://www.shaoqun.com/a/466734.html*特别声明以上内容来自于网络收集著作权属原作者所有如有侵权请联系我们adminshaoqun.com。0