값 개수 집계
값 개수 집계 (Value count aggregation)
value_count 메트릭은 집계된 문서에서 추출된 값의 개수를 세는 단일 값(single-value) 메트릭 집계예요. 이러한 값은 문서의 특정 필드에서 추출하거나 스크립트로 생성할 수 있어요. 이 집계는 avg 같은 집계와 함께 사용하여 계산된 결과에 몇 개의 값이 기여했는지 파악하는 데 자주 쓰여요.
value_count 집계는 값을 중복 제거하지 않아요. 필드에 중복 값이 있거나 스크립트가 단일 문서에 대해 동일한 값을 여러 번 생성하면 각 값이 개별적으로 계산돼요.
출처: 문서
본문
파라미터
value_count 집계는 다음과 같은 파라미터를 받아요.
| 파라미터 | 데이터 타입 | 설명 |
|---|---|---|
field |
String | 값을 세올 필드예요. |
script |
Object | 계산할 값을 생성하는 스크립트예요. field 대신 또는 field와 함께 사용할 수 있어요. |
missing |
Number 또는 String | 대상 필드가 없는 문서에 할당되는 기본값이에요. |
예제
다음 예제는 e-커머스 인덱스에서 taxful_total_price 값을 포함하는 문서의 수를 세어요:
GET /opensearch_dashboards_sample_data_ecommerce/_search
{
"size": 0,
"aggs": {
"number_of_values": {
"value_count": {
"field": "taxful_total_price"
}
}
}
}
응답은 지정된 필드에 값을 포함하는 문서가 4,675개임을 보여줘요:
{
...
"hits": {
"total": {
"value": 4675,
"relation": "eq"
},
"max_score": null,
"hits": []
},
"aggregations": {
"number_of_values": {
"value": 4675
}
}
}
집계 이름(number_of_values)은 응답에서 집계 결과를 검색하는 키로도 사용돼요.
스크립트 사용하기
필드를 지정하는 대신 계산할 값을 생성하는 스크립트를 제공할 수 있어요. 자세한 내용은 Painless 스크립트 언어 문서를 참고하세요. 다음 예제는 계산된 값을 기반으로 개수를 세는 인라인 Painless 스크립트를 사용해요:
GET /opensearch_dashboards_sample_data_ecommerce/_search
{
"size": 0,
"aggs": {
"type_count": {
"value_count": {
"script": {
"source": "doc['taxful_total_price'].value"
}
}
}
}
}
응답은 스크립트로 생성된 값의 개수를 반환해요:
{
...
"hits": {
"total": {
"value": 4675,
"relation": "eq"
},
"max_score": null,
"hits": []
},
"aggregations": {
"type_count": {
"value": 4675
}
}
}
저장된 스크립트 사용하기 (Using a stored script)
여러 쿼리에서 스크립트를 재사용하려면 스크립트를 저장한 뒤 ID로 참조할 수 있어요. 다음 예제는 필드 이름을 파라미터로 받는 저장된 스크립트를 사용해요:
GET /opensearch_dashboards_sample_data_ecommerce/_search
{
"size": 0,
"aggs": {
"type_count": {
"value_count": {
"script": {
"id": "my_value_count_script",
"params": {
"field": "taxful_total_price"
}
}
}
}
}
}
value_count는 내부적으로 모든 값을 바이트 시퀀스로 표현하므로, _value 스크립트 변수를 사용해 필드 값에 접근하면 값을 네이티브 형식이 아닌 문자열로 반환해요.