기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS AppSync 에 대한 해석기 매핑 템플릿 참조 OpenSearch
참고
이제 APPSYNC_JS 런타임과 해당 설명서를 주로 지원합니다. 여기에서 APPSYNC_JS 런타임 및 해당 가이드를 사용하는 것이 좋습니다.
Amazon OpenSearch Service용 AWS AppSync 해석기를 사용하면 GraphQL을 사용하여 계정의 기존 OpenSearch Service 도메인에 데이터를 저장하고 검색할 수 있습니다. 이 해석기는 들어오는 GraphQL 요청을 OpenSearch 서비스 요청에 매핑한 다음 OpenSearch 서비스 응답을 GraphQL 에 다시 매핑할 수 있도록 허용합니다. 이 섹션에서는 지원되는 OpenSearch 서비스 작업에 대한 매핑 템플릿을 설명합니다.
요청 매핑 템플릿
대부분의 OpenSearch 서비스 요청 매핑 템플릿에는 몇 조각만 변경되는 공통 구조가 있습니다. 다음 예제에서는 문서가 라는 인덱스로 구성된 OpenSearch 서비스 도메인에 대한 검색을 실행합니다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 서비스는 GraphQL 로 변환해야 AWS AppSync 하는 응답을 에 전송합니다.
대부분의 GraphQL 쿼리는 OpenSearch 서비스 응답에서 _source
필드를 찾고 있습니다. 검색을 수행하여 개별 문서 또는 문서 목록을 반환할 수 있으므로 OpenSearch 서비스에는 두 가지 일반적인 응답 매핑 템플릿이 사용됩니다.
결과 목록
[ #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
참고
이는 요청 매핑 템플릿에만 적용됩니다.
HTTP 가 OpenSearch 서비스 도메인으로 AWS AppSync 보내는 메서드 또는 동사(GET, POSTPUT, HEAD 또는 DELETE). 키와 값은 둘 다 문자열이어야 합니다.
"operation" : "PUT"
path
field
참고
이는 요청 매핑 템플릿에만 적용됩니다.
의 OpenSearch 서비스 요청에 대한 검색 경로입니다 AWS AppSync. 이는 작업의 동사에 URL 대한 HTTP 를 구성합니다. 키와 값은 둘 다 문자열이어야 합니다.
"path" : "/<indexname>/_doc/<_id>" "path" : "/<indexname>/_doc" "path" : "/<indexname>/_search" "path" : "/<indexname>/_update/<_id>
매핑 템플릿이 평가되면 이 경로는 OpenSearch 서비스 도메인을 포함하여 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 서비스 도메인에 대해 잘 구성된 검색 요청을 생성할 수 있습니다. 키는 객체로 구성된 문자열이어야 합니다. 아래에 몇 가지 경우가 나와 있습니다.
예 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참조하세요. 요청 헤더에 액세스