본문 바로가기
WIKI 기술 지식 베이스

getMetadata() function

원문 보기 위키 갱신

출처: 문서

본문

getMetadata() 함수

getMetadata() 함수는 리터럴 문자열 인수 하나를 받아서 이벤트 메타데이터에서 특정 키를 조회해요.

키에 /가 포함되어 있으면 함수가 메타데이터를 재귀적으로 조회해요. 전달되면 표현식은 해당 키에 대응하는 값을 반환해요.

반환되는 값은 어떤 타입이든 될 수 있어요. 예를 들어 메타데이터에 {"key1": "value2", "key2": 10}이 들어 있다면, getMetadata("key1") 함수는 value2를 반환해요. getMetadata("key2") 함수는 10을 반환해요.

예제

다음 파이프라인은 요청에서 파생된 값을 이벤트 메타데이터에 기록한 다음, OpenSearch 싱크에서 getMetadata()를 사용해 테넌트 범위의 일별 인덱스 이름과 문서 ID를 만들어요:

metadata-pass-demo:
  source:
    http:
      ssl: false

  processor:
    - add_entries:
        entries:
          # write to metadata
          - metadata_key: tenant        
            value_expression: /tenant
          - metadata_key: ingest_marker
            value: batch-001
    - add_entries:
        entries:
          - key: tenant_from_meta
            value_expression: getMetadata("tenant")

  sink:
    - opensearch:
        hosts: ["https://opensearch:9200"]
        insecure: true
        username: admin
        password: admin_password
        index_type: custom
        # Use metadata inside sink format strings
        index: demo-%{yyyy.MM.dd}-${getMetadata("tenant")}
        document_id: ${/id}-${getMetadata("tenant")}

{% include copy.html %}

다음 명령어로 파이프라인을 테스트할 수 있어요:

curl -sS -X POST "http://localhost:2021/log/ingest" \
  -H "Content-Type: application/json" \
  -d '[{"id":"1","tenant":"eu","message":"hello"}, {"id":"2","tenant":"us","message":"hi"}]'

{% include copy.html %}

OpenSearch에 저장된 문서에는 다음 정보가 들어 있어요:

{
  ...
  "hits": {
    "total": {
      "value": 2,
      "relation": "eq"
    },
    "max_score": 1,
    "hits": [
      {
        "_index": "demo-2025.10.22-eu",
        "_id": "1-eu",
        "_score": 1,
        "_source": {
          "id": "1",
          "tenant": "eu",
          "message": "hello",
          "tenant_from_meta": "eu"
        }
      },
      {
        "_index": "demo-2025.10.22-us",
        "_id": "2-us",
        "_score": 1,
        "_source": {
          "id": "2",
          "tenant": "us",
          "message": "hi",
          "tenant_from_meta": "us"
        }
      }
    ]
  }
}

더 알아보기 (Learn more)