OpenSearch에 대한 해석기 매핑 템플릿 참조입니다. - AWS AppSync

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

OpenSearch에 대한 해석기 매핑 템플릿 참조입니다.

참고

이제 우리는 주로 APPSYNC_JS 런타임과 해당 문서를 지원합니다. 여기에서 APPSYNC_JS 런타임과 해당 안내서를 사용해 보세요.

Amazon OpenSearch Service용 AWS AppSync 해석기에서는 GraphQL을 사용하여 계정에 있는 기존 OpenSearch Service 도메인의 데이터를 저장 및 검색할 수 있습니다. 이 해석기는 수신되는 GraphQL 요청을 OpenSearch Service 요청으로 매핑한 다음 OpenSearch Service 응답을 다시 GraphQL로 매핑하도록 하여 작동합니다. 이 섹션에서는 지원되는 OpenSearch Service 작업에 대한 매핑 템플릿에 대해 설명합니다.

요청 매핑 템플릿

대부분의 OpenSearch Service 요청 매핑 템플릿에는 몇 부분만 변경되는 공통 구조가 있습니다. 다음 예제에서는 OpenSearch Service 도메인을 대상으로 검색을 실행합니다. 이 도메인에서는 post라는 인덱스로 문서가 구성되어 있습니다. 검색 파라미터는 body 섹션에 정의되어 있고, 공통 쿼리 절은 대부분 query 필드에서 정의합니다. 이 예에서는 문서의 "Nadia" 필드에서 "Bailey", author 또는 둘 다가 포함된 문서를 검색합니다.

{ "version":"2017-02-28", "operation":"GET", "path":"/post/_search", "params":{ "headers":{}, "queryString":{}, "body":{ "from":0, "size":50, "query" : { "bool" : { "should" : [ {"match" : { "author" : "Nadia" }}, {"match" : { "author" : "Bailey" }} ] } } } } }

응답 매핑 템플릿

다른 데이터 소스와 마찬가지로, OpenSearch Service는 GraphQL로 변환해야 하는 응답을 AWS AppSync에 전송합니다.

대부분의 GraphQL 쿼리는 OpenSearch Service 응답에서 _source 필드를 검색합니다. 개별 문서 또는 문서 목록을 반환하도록 검색을 수행할 수 있기 때문에 OpenSearch Service에서는 두 가지 공통 응답 매핑 템플릿이 사용됩니다.

결과 목록

[ #foreach($entry in $context.result.hits.hits) #if( $velocityCount > 1 ) , #end $utils.toJson($entry.get("_source")) #end ]

개별 항목

$utils.toJson($context.result.get("_source"))

operation field

(요청 매핑 템플릿만)

AWS AppSync에서 OpenSearch Service 도메인에 보내는 HTTP 메서드 또는 동사(GET, POST, PUT, HEAD 또는 DELETE). 키와 값은 둘 다 문자열이어야 합니다.

"operation" : "PUT"

path field

(요청 매핑 템플릿만)

AWS AppSync에서 보낸 OpenSearch Service 요청에 대한 검색 경로입니다. 이 경로는 작업의 HTTP 동사에 대한 URL을 구성합니다. 키와 값은 둘 다 문자열이어야 합니다.

"path" : "/<indexname>/_doc/<_id>" "path" : "/<indexname>/_doc" "path" : "/<indexname>/_search" "path" : "/<indexname>/_update/<_id>

매핑 템플릿이 평가되면 이 경로는 OpenSearch Service 도메인을 포함해 HTTP 요청의 일부로 전송됩니다. 예를 들어, 이전 예제는 다음과 같이 변환될 수 있습니다.

GET https://opensearch-domain-name.REGION.es.amazonaws.com/indexname/type/_search

params field

(요청 매핑 템플릿만)

검색에서 수행할 작업을 지정하는 데 사용되며, 가장 일반적으로 본문 내에 쿼리 값을 설정하여 지정합니다. 그러나 응답 형식 지정 등과 같이 구성할 수 있는 기타 여러 가지 기능이 있습니다.

  • headers

    키-값 페어로 표시되는 헤더 정보. 키와 값은 둘 다 문자열이어야 합니다. 예제:

    "headers" : { "Content-Type" : "application/json" }
    참고

    AWS AppSync는 현재 JSON만 Content-Type으로 지원합니다.

  • queryString

    JSON 응답에 대한 코드 형식 지정 등과 같이 공통 옵션을 지정하는 키-값 페어. 키와 값은 둘 다 문자열이어야 합니다. 예를 들어, 형식이 잘 지정된 JSON을 가져오려면 다음을 사용합니다.

    "queryString" : { "pretty" : "true" }
  • body

    요청의 주요 부분으로, AWS AppSync에서 OpenSearch Service 도메인에 대해 잘 구성된 검색 요청을 작성하도록 합니다. 키는 객체로 구성된 문자열이어야 합니다. 아래에 몇 가지 경우가 나와 있습니다.

예 1

"시애틀"과 일치하는 도시가 포함된 모든 문서를 반환합니다.

"body":{ "from":0, "size":50, "query" : { "match" : { "city" : "seattle" } } }

예제 2

도시 또는 주가 "워싱턴"과 일치하는 모든 문서를 반환합니다.

"body":{ "from":0, "size":50, "query" : { "multi_match" : { "query" : "washington", "fields" : ["city", "state"] } } }

변수 전달

(요청 매핑 템플릿만)

또한 VTL 문에서 평가의 일부로 변수를 전달할 수도 있습니다. 예를 들어, 다음과 같은 GraphQL 쿼리가 있다고 가정해 보겠습니다.

query { searchForState(state: "washington"){ ... } }

이 매핑 템플릿은 인수로 주를 받을 수 있습니다.

"body":{ "from":0, "size":50, "query" : { "multi_match" : { "query" : "$context.arguments.state", "fields" : ["city", "state"] } } }

VTL에 포함할 수 있는 유틸리티 목록은 요청 헤더에 액세스를 참조하십시오.