평균 집계
평균 집계 (Average aggregation)
avg 메트릭은 필드의 평균값을 반환하는 단일 값(single-value) 메트릭 집계예요. 집계가 적용되는 필드의 산술 평균을 구하고 싶을 때 사용해요.
출처: 문서
본문
파라미터
avg 집계는 다음과 같은 파라미터를 받아요.
| 파라미터 | 필수/선택 | 데이터 타입 | 설명 |
|---|---|---|---|
field |
필수 | String | 평균을 계산할 필드예요. |
missing |
선택 | Float | 필드의 값이 없는 문서에 할당할 값이에요. 기본적으로 avg는 계산에서 누락된 값을 생략해요. |
예제
다음 예제 요청은 OpenSearch Dashboards e-커머스 샘플 데이터에서 taxful_total_price 필드의 평균을 계산해요:
GET opensearch_dashboards_sample_data_ecommerce/_search
{
"size": 0,
"aggs": {
"avg_taxful_total_price": {
"avg": {
"field": "taxful_total_price"
}
}
}
}
예제 응답
응답에는 taxful_total_price의 평균값이 담겨 있어요:
{
"took": 85,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 4675,
"relation": "eq"
},
"max_score": null,
"hits": []
},
"aggregations": {
"avg_taxful_total_price": {
"value": 75.05542864304813
}
}
}
집계 이름(avg_taxful_total_price)을 키로 사용해 응답에서 해당 집계 결과를 꺼내 올 수 있어요.
누락 값 처리 (Missing values)
집계 대상 필드의 값이 없는 문서에 특정 값을 할당해 줄 수 있어요. 자세한 내용은 누락 값 집계(Missing aggregations) 문서를 참고하세요.
다음 문서들을 인덱스에 넣어 예제 인덱스를 준비해 봐요. 두 번째 문서에는 gpa 값이 없다는 점에 주목하세요:
POST _bulk
{ "create": { "_index": "students", "_id": "1" } }
{ "name": "John Doe", "gpa": 3.89, "grad_year": 2022}
{ "create": { "_index": "students", "_id": "2" } }
{ "name": "Jonathan Powers", "grad_year": 2025 }
{ "create": { "_index": "students", "_id": "3" } }
{ "name": "Jane Doe", "gpa": 3.52, "grad_year": 2024 }
예제: 누락 값을 대체하기
누락된 gpa 필드를 0으로 대체하면서 평균을 계산해 봐요:
GET students/_search
{
"size": 0,
"aggs": {
"avg_gpa": {
"avg": {
"field": "gpa",
"missing": 0
}
}
}
}
응답은 다음과 같아요. 누락 값을 무시하는 다음 예제와 비교해 보세요:
{
"took": 12,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 3,
"relation": "eq"
},
"max_score": null,
"hits": []
},
"aggregations": {
"avg_gpa": {
"value": 2.4700000286102295
}
}
}
예제: 누락 값 무시하기
missing 파라미터를 지정하지 않고 평균을 계산해 봐요:
GET students/_search
{
"size": 0,
"aggs": {
"avg_gpa": {
"avg": {
"field": "gpa"
}
}
}
}
집계자는 해당 필드 값이 없는 문서를 생략하고 평균을 계산해요(기본 동작):
{
"took": 255,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 3,
"relation": "eq"
},
"max_score": null,
"hits": []
},
"aggregations": {
"avg_gpa": {
"value": 3.7050000429153442
}
}
}