Elasticsearchスーパー重合関数(四)bucketsの入れ子使用
11942 ワード
Elasticsearchスーパー重合関数(四)bucketsの入れ子使用
作者:ydw
場所:武漢
email:[email protected] Elasticsearchスーパー重合関数(四)bucketsの入れ子使用 例:四半期ごとに全自動車ブランドの総売上高を展示するために重合を構築する.同時に四半期ごとに、自動車ブランドごとに販売総額を計算して、どのブランドが一番儲かるかを探し出すことができます. httpコード java-ap リターン結果 元のデータはやはり第一編のデータを引用します.ElasticSearchの非常に強い集約クエリ(一)
実例:統合を構築し、四半期ごとに全自動車ブランドの総売上高を展示する.同時に四半期ごとに、自動車ブランドごとに販売総額を計算して、どのブランドが一番儲かるかを探し出すことができます.
httpコード
作者:ydw
場所:武漢
email:[email protected]
実例:統合を構築し、四半期ごとに全自動車ブランドの総売上高を展示する.同時に四半期ごとに、自動車ブランドごとに販売総額を計算して、どのブランドが一番儲かるかを探し出すことができます.
httpコード
GET /cars/transactions/_search
{
"size" : 0,
"aggs": {
"sales": {
"date_histogram": {
"field": "sold",
"interval": "quarter",
"format": "yyyy-MM-dd",
"min_doc_count" : 0,
"extended_bounds" : {
"min" : "2014-01-01",
"max" : "2014-12-31"
}
},
"aggs": {
"per_make_sum": {
"terms": {
"field": "make"
},
"aggs": {
"sum_price": {
"sum": { "field": "price" }
}
}
},
"total_sum": {
"sum": { "field": "price" }
}
}
}
}
}
java-api
@Test
public void bucketsInsideBuckets(){
SearchResponse response = transportClient.prepareSearch("cars")
.setTypes("transactions")
.addAggregation(
AggregationBuilders.dateHistogram("sales")
.field("sold")
.dateHistogramInterval(DateHistogramInterval.QUARTER)
.format("yyyy-MM-dd")
.minDocCount(0l)
.extendedBounds(
new ExtendedBounds("2014-01-01","2014-12-31")
).subAggregation(
// ,
AggregationBuilders.sum("total_sum")
.field("price")
)
// , ,
.subAggregation(
AggregationBuilders.terms("per_make_sum")
.field("make")
.subAggregation(
//
AggregationBuilders.sum("sum_price")
.field("price")
)
)
)
.setSize(0)
.get();
Aggregation sales = response.getAggregations().get("sales");
System.out.println(sales);
結果を返します{
"took": 1,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 7,
"max_score": 0.0,
"hits": []
},
"aggregations": {
"sales": {
"buckets": [
{
"key_as_string": "2014-01-01",//
"key": 1388534400000,
"doc_count": 1,
"per_make_sum": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "bmw",
"doc_count": 1,
"sum_price": {//
"value": 80000.0
}
}
]
},
"total_sum": {//
"value": 80000.0
}
},
{
"key_as_string": "2014-04-01",
"key": 1396310400000,
"doc_count": 1,
"per_make_sum": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "ford",
"doc_count": 1,
"sum_price": {
"value": 30000.0
}
}
]
},
"total_sum": {
"value": 30000.0
}
},
{
"key_as_string": "2014-07-01",
"key": 1404172800000,
"doc_count": 2,
"per_make_sum": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "toyota",
"doc_count": 2,
"sum_price": {
"value": 27000.0
}
}
]
},
"total_sum": {
"value": 27000.0
}
},
{
"key_as_string": "2014-10-01",
"key": 1412121600000,
"doc_count": 3,
"per_make_sum": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "honda",
"doc_count": 3,
"sum_price": {
"value": 50000.0
}
}
]
},
"total_sum": {
"value": 50000.0
}
}
]
}
}
}