값 개수 집계

값 개수 집계 (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 스크립트 변수를 사용해 필드 값에 접근하면 값을 네이티브 형식이 아닌 문자열로 반환해요.

더 알아보기 (Learn more)