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