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

Copy processor

원문 보기 위키 갱신

출처: 문서

본문

이 문서는 OpenSearch 인제스트 파이프라인에서 copy 프로세서를 사용하는 방법을 설명해요. 대규모 또는 복잡한 데이터셋을 다루는 경우 OpenSearch 클러스터에서 실행되는 Data Prepper copy_values 프로세서를 사용하는 것을 고려해 보세요. {: .note}

Copy 프로세서

copy 프로세서는 기존 필드의 전체 객체를 다른 필드로 복사해요.

구문

다음은 copy 프로세서의 구문이에요:

{
    "copy": {
      "source_field": "source_field", 
      "target_field": "target_field",
      "ignore_missing": true,
      "override_target": true,
      "remove_source": true
    }
}

{% include copy.html %}

구성 매개변수

다음 표는 copy 프로세서의 필수 및 선택적 매개변수를 보여줘요.

매개변수 필수/선택적 설명
source_field 필수 복사할 필드의 이름이에요. 템플릿 스니펫을 지원해요.
target_field 필수 복사 대상 필드의 이름이에요. 템플릿 스니펫을 지원해요.
ignore_missing 선택적 프로세서가 지정된 source_field를 포함하지 않은 문서를 무시할지 여부를 지정해요. true로 설정하면 source_field가 존재하지 않거나 null인 경우 프로세서가 문서를 수정하지 않아요. 기본값은 false예요.
override_target 선택적 프로세서가 문서에 이미 존재하는 target_field를 덮어쓸지 여부를 지정해요. true로 설정하면 이미 존재하는 경우 프로세서가 target_field의 값을 덮어써요. 기본값은 false예요.
remove_source 선택적 프로세서가 복사 후 source_field를 제거할지 여부를 지정해요. true로 설정하면 프로세서가 문서에서 source_field를 제거해요. 기본값은 false예요.
description 선택적 프로세서에 대한 간단한 설명이에요.
if 선택적 프로세서 실행을 위한 조건이에요.
ignore_failure 선택적 프로세서가 오류가 발생해도 계속 실행할지 여부를 지정해요. true로 설정하면 실패를 무시해요. 기본값은 false예요.
on_failure 선택적 프로세서가 실패할 경우 실행할 프로세서 목록이에요.
tag 선택적 프로세서의 식별 태그예요. 동일한 유형의 프로세서를 구분하기 위해 디버깅에 유용해요.

프로세서 사용

파이프라인에서 프로세서를 사용하려면 다음 단계를 따라요.

1단계: 파이프라인 생성

다음 쿼리는 중첩 객체를 한 필드에서 루트 레벨로 복사하는 copy_object라는 파이프라인을 생성해요:

PUT /_ingest/pipeline/copy_object
{
  "description": "Pipeline that copies object.",
  "processors": [
    {
      "copy": {
        "source_field": "message.content", 
        "target_field":"content",
        "ignore_missing": true,
        "override_target": true,
        "remove_source": true
      }
    }
  ]
}

{% include copy-curl.html %}

2단계(선택적): 파이프라인 테스트

문서를 인제스트하기 전에 파이프라인을 테스트하는 것이 좋아요. {: .tip}

파이프라인을 테스트하려면 다음 쿼리를 실행해요:

POST _ingest/pipeline/copy_object/_simulate
{
  "docs": [
    {
      "_index": "testindex1",
      "_id": "1",
      "_source":{
         "message": {
          "content": {
            "foo": "bar",
            "zoo": [1, 2, 3]
          }
         }
      }
    }
  ]
}

{% include copy-curl.html %}

응답

다음 예시 응답은 파이프라인이 예상대로 작동하고 있음을 확인해줘요:

{
  "docs": [
    {
      "doc": {
        "_index": "testindex1",
        "_id": "1",
        "_source": {
          "content": {
            "foo": "bar",
            "zoo": [1, 2, 3]
          }
        },
        "_ingest": {
          "timestamp": "2023-08-24T18:02:13.218986756Z"
        }
      }
    }
  ]
}

3단계: 문서 인제스트

다음 쿼리는 testindex1이라는 인덱스에 문서를 인제스트해요:

PUT testindex1/_doc/1?pipeline=copy_object
{
  "content": {
    "foo": "bar",
    "zoo": [1, 2, 3]
  }
}

{% include copy-curl.html %}

4단계(선택적): 문서 검색

문서를 검색하려면 다음 쿼리를 실행해요:

GET testindex1/_doc/1

{% include copy-curl.html %}

더 알아보기 (Learn more)