|
最近在做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()));
}
}
最后将管道中的数据去出,着实费了一大波的劲儿
|