버킷 선택기 집계
버킷 선택기 집계 (Bucket selector aggregation)
bucket_selector 집계는 히스토그램(또는 date_histogram) 집계가 반환한 버킷이 최종 결과에 포함되어야 하는지 판단하기 위해 스크립트를 평가하는 부모(parent) 파이프라인 집계예요.
새 값을 생성하는 다른 파이프라인 집계와 달리, bucket_selector 집계는 필터 역할을 하여 지정된 기준에 따라 전체 버킷을 유지하거나 제거해요. 이 집계를 사용해 버킷의 계산된 메트릭을 기반으로 버킷을 필터링할 수 있어요.
출처: 문서
본문
파라미터
bucket_selector 집계는 다음과 같은 파라미터를 받아요.
| 파라미터 | 필수/선택 | 데이터 타입 | 설명 |
|---|---|---|---|
buckets_path |
필수 | Object | 스크립트에서 사용할 메트릭을 식별하는, 변수 이름을 버킷화된 메트릭에 매핑한 맵이에요. 메트릭은 숫자여야 해요. 스크립트 변수(Script variables) 섹션을 참고하세요. |
script |
필수 | String 또는 Object | 실행할 스크립트예요. 인라인 스크립트, 저장된 스크립트 또는 스크립트 파일일 수 있어요. 스크립트는 buckets_path 파라미터에 정의된 변수 이름에 접근할 수 있어요. Boolean 값을 반환해야 해요. false를 반환하는 버킷은 최종 출력에서 제거돼요. |
gap_policy |
선택 | String | 누락 데이터에 적용할 정책이에요. 유효한 값은 skip과 insert_zeros예요. 기본값은 skip이에요. 데이터 공백(Data gaps) 문서를 참고하세요. |
예제
다음 예제는 OpenSearch Dashboards e-커머스 샘플 데이터에서 일주일 간격의 날짜 히스토그램을 생성해요. sum 하위 집계가 매주 모든 판매의 합계를 계산해요. 마지막으로 bucket_selector 집계가 결과 주간 버킷을 필터링하여 합계가 $75,000를 넘지 않는 모든 버킷을 제거해요:
GET opensearch_dashboards_sample_data_ecommerce/_search
{
"size": 0,
"aggs": {
"sales_per_week": {
"date_histogram": {
"field": "order_date",
"calendar_interval": "week"
},
"aggs": {
"weekly_sales": {
"sum": {
"field": "taxful_total_price",
"format": "$#,###.00"
}
},
"avg_vendor_spend": {
"bucket_selector": {
"buckets_path": {
"weekly_sales": "weekly_sales"
},
"script": "params.weekly_sales > 75000"
}
}
}
}
}
}
예제 응답
집계는 스크립트 기준을 충족하는 sales_per_week 버킷을 반환해요:
{
"took": 3,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 4675,
"relation": "eq"
},
"max_score": null,
"hits": []
},
"aggregations": {
"sales_per_week": {
"buckets": [
{
"key_as_string": "2025-03-31T00:00:00.000Z",
"key": 1743379200000,
"doc_count": 1048,
"weekly_sales": {
"value": 79448.60546875,
"value_as_string": "$79,448.61"
}
},
{
"key_as_string": "2025-04-07T00:00:00.000Z",
"key": 1743984000000,
"doc_count": 1048,
"weekly_sales": {
"value": 78208.4296875,
"value_as_string": "$78,208.43"
}
},
{
"key_as_string": "2025-04-14T00:00:00.000Z",
"key": 1744588800000,
"doc_count": 1073,
"weekly_sales": {
"value": 81277.296875,
"value_as_string": "$81,277.30"
}
}
]
}
}
}
숫자 값 대신 Boolean을 반환하므로 bucket_selector 집계는 format 파라미터를 받지 않아요. 이 예제에서는 sum 하위 집계가 value_as_string 결과로 형식화된 메트릭을 반환해요. 이를 bucket_script 집계의 예제와 대조해 보세요.