searchResponse.getAggregations() 遍历数据
时间: 2024-02-01 10:04:51 浏览: 28
在Elasticsearch中,搜索结果中包含了聚合结果,可以使用`SearchResponse.getAggregations()`方法来获取聚合结果的集合。聚合结果的集合是一个`Aggregations`对象,可以使用其中的方法来遍历数据。以下是一个示例代码:
```
SearchResponse searchResponse = client.prepareSearch("your-index-name")
.setTypes("your-type-name")
.addAggregation(AggregationBuilders.terms("group_by_field").field("your-field-name"))
.execute()
.actionGet();
Aggregations aggregations = searchResponse.getAggregations();
Terms byFieldAggregation = aggregations.get("group_by_field");
for (Terms.Bucket bucket : byFieldAggregation.getBuckets()) {
String fieldValue = bucket.getKeyAsString();
long docCount = bucket.getDocCount();
System.out.println("Field value: " + fieldValue + ", Doc count: " + docCount);
}
```
在这个示例代码中,我们先使用`SearchResponse.getAggregations()`方法获取聚合结果的集合,然后使用`Aggregations.get()`方法获取指定名称的聚合结果,接着使用`Terms.Bucket`对象的方法来遍历聚合结果。其中,`Terms.Bucket.getKeyAsString()`方法可以获取该桶的字段值,`Terms.Bucket.getDocCount()`方法可以获取该桶的文档数。
注意:以上示例代码仅供参考,具体实现方式应根据实际情况进行调整。