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

Script ingest processor

원문 보기 위키 갱신

출처: 문서

본문

스크립트 수집 프로세서

script 프로세서는 수집 과정 중에 OpenSearch 문서의 데이터를 수정하거나 변환할 수 있는 인라인 및 저장된 스크립트를 실행해요. 이 프로세서는 스크립트 캐싱을 사용하여 성능을 향상시키는데, 스크립트가 문서마다 다시 컴파일될 수 있기 때문이에요. OpenSearch에서 스크립트 작업에 대한 자세한 내용은 Script APIs를 참조하세요.

다음은 script 프로세서의 구문이에요.

{
  "processor": {
    "script": {
      "source": "<script_source>",
      "lang": "<script_language>",
      "params": {
        "<param_name>": "<param_value>"
      }
    }
  }
}

{% include copy.html %}

구성 매개변수

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

매개변수 필수/선택 설명
source 선택 실행할 Painless 스크립트예요. 자세한 내용은 Painless scripting language를 참조하세요. id 또는 source 중 하나를 반드시 지정해야 하며, 둘 다 지정할 수는 없어요. source를 지정하면 제공된 소스 코드를 사용하여 스크립트가 실행돼요.
id 선택 Create Stored Script API를 사용하여 이전에 생성된 저장된 스크립트의 ID예요. id 또는 source 중 하나를 반드시 지정해야 하며, 둘 다 지정할 수는 없어요. id를 지정하면 지정된 ID의 저장된 스크립트에서 스크립트 소스를 가져와요.
lang 선택 스크립트의 프로그래밍 언어예요. 기본값은 painless예요.
params 선택 스크립트에 전달할 수 있는 매개변수예요.
description 선택 프로세서의 목적이나 구성에 대한 설명이에요.
if 선택 프로세서를 조건부로 실행하도록 지정해요.
ignore_failure 선택 프로세서 실패를 무시하도록 지정해요. Handling pipeline failures를 참조하세요.
on_failure 선택 실행 중 프로세서가 실패할 경우 실행할 프로세서 목록을 지정해요. 이 프로세서들은 지정된 순서대로 실행돼요. Handling pipeline failures를 참조하세요.
tag 선택 프로세서의 식별 태그예요. 동일한 유형의 프로세서를 구분하기 위해 디버깅에 유용해요.

프로세서 사용하기

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

1단계: 파이프라인 생성

다음 쿼리는 script 프로세서를 사용하여 message 필드를 대문자로 변환하는 my-script-pipeline이라는 파이프라인을 생성해요.

PUT _ingest/pipeline/my-script-pipeline
{
  "description": "Example pipeline using the ScriptProcessor",
  "processors": [
    {
      "script": {
        "source": "ctx.message = ctx.message.toUpperCase()",
        "lang": "painless",
        "description": "Convert message field to uppercase"
      }
    }
  ]
}

{% include copy-curl.html %}

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

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

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

POST _ingest/pipeline/my-script-pipeline/_simulate
{
  "docs": [
    {
      "_source": {
        "message": "hello, world!"
      }
    }
  ]
}

{% include copy-curl.html %}

응답

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

{
  "docs": [
    {
      "doc": {
        "_index": "_index",
        "_id": "_id",
        "_source": {
          "message": "HELLO, WORLD!"
        },
        "_ingest": {
          "timestamp": "2024-05-30T16:24:23.30265405Z"
        }
      }
    }
  ]
}

{% include copy-curl.html %}

3단계: 문서 수집

다음 쿼리는 testindex1이라는 인덱스에 문서를 수집해요.

POST testindex1/_doc?pipeline=my-script-pipeline
{
  "message": "hello, world!"
}

{% include copy-curl.html %}

응답

응답은 문서가 testindex1에 인덱싱되었고, message 필드가 대문자로 변환된 모든 문서가 인덱싱되었음을 확인해줘요.

{
  "_index": "testindex1",
  "_id": "1",
  "_version": 1,
  "result": "created",
  "_shards": {
    "total": 2,
    "successful": 1,
    "failed": 0
  },
  "_seq_no": 6,
  "_primary_term": 2
}

{% include copy-curl.html %}

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

문서를 검색하려면 다음 쿼리를 실행하세요.

GET testindex1/_doc/1

{% include copy-curl.html %}

더 알아보기 (Learn more)