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 %}