使用Elasticsearch JavaApi进行分类统计的聚合例子
时间: 2024-01-22 16:41:59 浏览: 86
elasticsearch java操作的api实例
4星 · 用户满意度95%
好的,下面是一个使用Elasticsearch Java API进行分类统计聚合的例子:
假设我们有一个名为“products”的索引,其中包含产品名称和价格字段。我们想要按价格范围对产品进行分类统计,以便了解哪些价格区间的产品最受欢迎。
首先,我们需要创建一个聚合对象:
```
AggregationBuilder aggregation = AggregationBuilders
.range("price_ranges")
.field("price")
.addUnboundedTo(50)
.addRange(50, 100)
.addRange(100, 200)
.addRange(200, 500)
.addUnboundedFrom(500);
```
这个聚合对象将按价格字段对文档进行分类统计,并将它们分成五个范围:小于等于50、50到100、100到200、200到500和大于等于500。现在,我们需要将这个聚合对象添加到我们的搜索请求中:
```
SearchRequest searchRequest = new SearchRequest("products");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.aggregation(aggregation);
searchRequest.source(searchSourceBuilder);
```
这将创建一个`SearchRequest`对象,将聚合对象添加到`SearchSourceBuilder`中,并将其设置为`SearchRequest`的搜索源。现在,我们可以执行搜索请求并从结果中提取聚合信息:
```
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
Range rangeAgg = searchResponse.getAggregations().get("price_ranges");
for (Range.Bucket bucket : rangeAgg.getBuckets()) {
String key = bucket.getKeyAsString();
long docCount = bucket.getDocCount();
System.out.println("Range: " + key + ", Count: " + docCount);
}
```
这会执行搜索请求,并从响应中提取名为“price_ranges”的聚合对象。我们可以遍历每个范围桶,并提取范围键和文档计数。最后,我们可以将这些信息输出到控制台或将它们用于其他目的。
希望这个例子能够帮助你理解如何使用Elasticsearch Java API进行分类统计聚合。
阅读全文