기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
참고
이제 우리는 주로 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에 포함할 수 있는 유틸리티 목록은 요청 헤더에 액세스를 참조하십시오.