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

Scripting

원문 보기 위키 갱신

출처: 문서

본문

스크립팅

_스크립트_는 OpenSearch가 요청 시 평가하는 사용자 정의 표현식이에요. 스크립트는 고정된 쿼리, 매핑 또는 집계로는 필요한 논리를 표현할 수 없는 경우 API를 확장해요. 예를 들어 각 검색 결과와 함께 계산된 필드를 반환하거나, 관련성 점수와 필드 값을 결합한 공식으로 문서를 순위 매기거나, 업데이트 중에 문서를 수정하는 경우가 있어요.

스크립트는 OpenSearch 내부에서 데이터 가까이에서 실행되므로, 문서를 검색하고 애플리케이션에서 변환한 다음 다시 색인화할 필요가 없어요. 이러한 속도에는 절충점이 있어요. 검색 또는 집계 스크립트는 OpenSearch가 고려하는 모든 문서에 대해 한 번씩 실행되므로, 대규모 인덱스에서 느린 스크립트는 느린 요청으로 이어져요.

기본 스크립팅 언어는 Painless예요. 스크립트가 허용되는 모든 곳에서 lang 필드가 언어를 선택하므로, 특정 요청에 대해 다른 언어를 선택할 수 있어요.

이 섹션의 예제는 제품 레코드의 단일 인덱스에 대해 실행되므로, 한 번 생성한 후 어떤 페이지에서든 따라할 수 있어요. 매핑 및 샘플 문서는 테스트 설정을 참조하세요.

사용 가능한 언어

다음 표의 모든 언어는 샌드박스 처리되어 기본 OpenSearch 배포판에서 사용할 수 있어요. Painless만 모든 스크립트 컨텍스트에서 실행되며, 다른 언어는 각각 단일 작업을 처리해요.

Language Purpose
painless 범용 스크립팅, 모든 컨텍스트에서 사용 가능.
expression 숫자 순위 지정 및 정렬.
mustache 검색 템플릿.
knn 정확한 k-NN 검색. knn 언어는 자체 코드를 허용하지 않아요. source는 리터럴 문자열 knn_score여야 하며, 필드와 쿼리 벡터는 params에 제공돼요. 전체 요청은 스코어링 스크립트를 사용한 정확한 k-NN 검색을 참조하세요.

클러스터가 지원하는 언어와 각 언어가 실행될 수 있는 컨텍스트를 보려면 Get Script Languages API를 사용하세요. 해당 응답은 앞의 표 이상의 언어를 나열할 수 있는데, 플러그인이 자체 내부 사용을 위해 언어를 등록할 수 있기 때문이에요. 각 컨텍스트가 제공하는 내용은 스크립트 컨텍스트를 참조하세요.

샌드박스 처리된 언어는 스크립트를 파일 액세스, 네트워크 액세스, 스레드 생성 및 리플렉션을 제외한 Java 클래스 및 메서드의 허용 목록으로 제한해요. 허용 목록은 적대적인 스크립트가 할 수 있는 피해를 제한하지만, 신뢰할 수 없는 소스의 스크립트를 안전하게 실행할 수 있게 하지는 않아요. 제어할 수 없는 소스의 스크립트를 수락하기 전에 Script security를 참조하세요. {: .warning}

다음 단계

첫 번째 스크립트를 작성하려면 다음 페이지를 순서대로 진행하세요.

  1. 스크립트 사용 방법은(는) script 객체를 소개하고, 인라인 스크립트를 실행하고 재사용을 위해 저장하는 방법을 보여주며, 이 섹션의 예제에서 사용하는 인덱스를 생성해요.
  2. 스크립트에서 문서 필드 액세스은(는) 스크립트가 문서 데이터를 읽는 방법과 각 작업에 대해 어떤 액세스 경로를 선택할지 설명해요.
  3. Painless 스크립팅 언어은(는) 기본 언어를 설명하고 전체 구문 참조로 연결해요.
  4. 스크립트 보안은(는) 클러스터가 수락하는 스크립트를 제한하는 설정을 설명해요. 클라이언트가 스크립트를 제출하도록 허용하기 전에 이를 적용하세요.

더 알아보기 (Learn more)