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"
}
}
]
}
}