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

Rename keys processor

원문 보기 위키 갱신

출처: 문서

본문

키 이름 변경 프로세서

rename_keys 프로세서는 이벤트의 키 이름을 변경해요.

구성

rename_keys 프로세서는 다음 옵션으로 구성할 수 있어요.

옵션 필수 설명
entries 예 이름을 변경할 이벤트 항목의 목록이에요.
from_key 예 이름을 변경할 항목의 키예요.
to_key 예 항목의 새 키예요.
overwrite_if_to_key_exists 아니요 true로 설정하면 이벤트에 key가 이미 있을 때 기존 값을 덮어써요. 기본값은 false예요.

사용법

시작하려면 다음 pipeline.yaml 파일을 생성해요.

rename-keys-nested-pipeline:
  source:
    http:
      path: /logs
      ssl: false
  processor:
    - rename_keys:
        entries:
          # Top-level rename
          - from_key: message
            to_key: msg
          # Level-2 (nested) renames — use slash paths
          - from_key: user/name
            to_key: user/username
          - from_key: user/id
            to_key: user/user_id
          - from_key: http/response/code
            to_key: http/status_code
          # If a target exists already, overwrite it
          - from_key: env
            to_key: metadata/environment
            overwrite_if_to_key_exists: true
  sink:
    - opensearch:
        hosts: ["https://opensearch:9200"]
        insecure: true
        username: admin
        password: admin_password
        index_type: custom
        index: rename-%{yyyy.MM.dd}

{% include copy.html %}

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

curl -sS -X POST "http://localhost:2021/logs" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "message": "hello world",
      "user": { "name": "alice", "id": 123 },
      "http": { "response": { "code": 200 } },
      "env": "prod",
      "metadata": { "environment": "staging" }
    },
    {
      "message": "goodbye",
      "user": { "name": "bob", "id": 456 },
      "http": { "response": { "code": 503 } },
      "env": "dev"
    }
  ]'

{% include copy.html %}

OpenSearch에 저장된 문서에는 다음 정보가 포함돼요.

{
  ...
  "hits": {
    "total": {
      "value": 2,
      "relation": "eq"
    },
    "max_score": 1,
    "hits": [
      {
        "_index": "rename-2025.11.04",
        "_id": "kq3NTpoBNvg1WLcAJOak",
        "_score": 1,
        "_source": {
          "user": {
            "username": "alice",
            "user_id": 123
          },
          "http": {
            "response": {},
            "status_code": 200
          },
          "metadata": {
            "environment": "prod"
          },
          "msg": "hello world"
        }
      },
      {
        "_index": "rename-2025.11.04",
        "_id": "k63NTpoBNvg1WLcAJOak",
        "_score": 1,
        "_source": {
          "user": {
            "username": "bob",
            "user_id": 456
          },
          "http": {
            "response": {},
            "status_code": 503
          },
          "msg": "goodbye",
          "metadata": {
            "environment": "dev"
          }
        }
      }
    ]
  }
}

특별 고려 사항

이름 변경 작업은 pipeline.yaml 파일에 키-값 쌍 항목이 나열된 순서대로 수행돼요. 즉, rename_keys 프로세서에서는 키-값 쌍이 순차적으로 이름 변경되는 체이닝이 암시적으로 이루어져요. 다음 예시 pipeline.yaml 파일을 참조하세요.

  processor:
    - rename_keys:
        entries:
        - from_key: "message"
          to_key: "message2"
        - from_key: "message2"
          to_key: "message3"

프로세서가 {"message": "hello"}를 수신하면 결과 출력은 다음과 같아요.

{"message3": "hello"}

더 알아보기 (Learn more)