버킷 선택기 집계

버킷 선택기 집계 (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 집계의 예제와 대조해 보세요.

더 알아보기 (Learn more)