형제 집계는 같은 레벨에 있는 새로운 집계를 계산할 수 있는 파이프라인 집계를 말한다.
즉, 형제 집계를 통해 수행되는 집계는 기존 버킷에 추가되는 형태가 아니라 같은 레벨의 새로운 집계를 생성한다.
형제 집계에는 다음과 같은 집계가 있다.
아파치 웹로그에서 분단위로 합산된 데이터 중에서 가장 큰 데이터량을 구하고 싶다. 즉, 분단위 합산의 최댓값을 구하고 싶다.
기존 방법으로는 date_histogram 집계를 구하고 그 하위집계로 sum 집계를 수행한뒤 가장 큰 값을 얻어야한다. 아래는 파이프라인 집계를 사용한 방법이다.
GET /apache-web-log/_search?size=0
{
"aggs": {
"histo": {
"date_histogram": {
"field": "timestamp",
"fixed_interval": "60s"
},
"aggs": {
"bytes_sum": {
"sum": {
"field": "bytes"
}
}
}
},
"max_bytes": {
"max_bucket": {
"buckets_path": "histo>bytes_sum"
}
}
}
}
# 결과
{
...
"aggregations" : {
"histo" : {
"buckets" : [
{
"key_as_string" : "2015-05-17T10:05:00.000Z",
"key" : 1431857100000,
"doc_count" : 74,
"bytes_sum" : {
"value" : 5185322.0
}
},
{
"key_as_string" : "2015-05-17T10:06:00.000Z",
"key" : 1431857160000,
"doc_count" : 0,
"bytes_sum" : {
"value" : 0.0
}
},
{
"key_as_string" : "2015-05-17T10:07:00.000Z",
"key" : 1431857220000,
"doc_count" : 0,
"bytes_sum" : {
"value" : 0.0
}
},
...
]
}
}
}