最近在做ES的aggregation,顺便说一下收获。
一:版本问题
dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-elasticsearch</artifactId> <version>3.1.4.RELEASE</version> </dependency> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>${elasticserch.version}</version> </dependency> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>transport</artifactId> <version>${elasticserch.version}</version> </dependency> <dependency> <groupId>org.elasticsearch.plugin</groupId> <artifactId>transport-netty4-client</artifactId> <version>6.8.0</version> </dependency>
这是配置的版本,.version设置为6.8 应用的es版本也是6.8
2.对于aggregation的数据解决
当应用SearchBuilder进行查询后,应用管道流查询出的数据特别繁琐
在应用debug调试的时候关注了一下
SearchResponse srps = sr.setSource(sourceBuilder).get(); //处理结果 Map<String,Aggregation> aggMap =srps.getAggregations().asMap(); InternalDateHistogram userCountDay = (InternalDateHistogram)aggMap.get("userDayCount"); List<InternalDateHistogram.Bucket> list = userCountDay.getBuckets(); for (InternalDateHistogram.Bucket in:list){ Aggregations aggregations = in.getAggregations(); List<Aggregation> aggregations1= aggregations.asList(); for(Aggregation a:aggregations1){ Double value = ((InternalSimpleValue) (a)).getValue(); Long putIn = new Double(value).longValue(); countList.add(new EsUserCount(putIn,in.getKeyAsString())); } }
最后将管道中的数据去出,着实费了一大波的劲儿