기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
OpenSearch용 AWS AppSync JavaScript 해석기 함수 참조
Amazon OpenSearch Service용 AWS AppSync 해석기에서는 GraphQL을 사용하여 계정에 있는 기존 OpenSearch Service 도메인의 데이터를 저장 및 검색할 수 있습니다. 이 해석기는 수신되는 GraphQL 요청을 OpenSearch Service 요청으로 매핑한 다음 OpenSearch Service 응답을 다시 GraphQL로 매핑하도록 하여 작동합니다. 이 섹션에서는 지원되는 OpenSearch Service 작업에 대한 요청 및 응답 핸들러를 설명합니다.
요청
대부분의 OpenSearch Service 요청 객체에는 몇 부분만 변경되는 공통 구조가 있습니다. 다음 예제는 문서가 post
유형이고 id
에서 인덱싱되는 OpenSearch Service 도메인에 대해 검색을 실행합니다. 검색 파라미터는 body
섹션에 정의되어 있고, 공통 쿼리 절은 대부분 query
필드에서 정의합니다. 이 예에서는 문서의 "Nadia"
필드에서 "Bailey"
, author
또는 둘 다가 포함된 문서를 검색합니다.
export function request(ctx) { return { operation: 'GET', path: '/id/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에서는 두 가지 공통 응답 패턴이 사용됩니다.
결과 목록
export function response(ctx) { const entries = []; for (const entry of ctx.result.hits.hits) { entries.push(entry['_source']); } return entries; }
개별 항목
export function response(ctx) { return ctx.result['_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/type" "path" : "/indexname/type/_search"
요청 핸들러가 평가되면 이 경로는 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
‘시애틀’과 일치하는 도시가 포함된 모든 문서를 반환합니다.
export function request(ctx) { return { operation: 'GET', path: '/id/post/_search', params: { headers: {}, queryString: {}, body: { from: 0, size: 50, query: { match: { city: 'seattle' } } }, }, }; }
예제 2
도시 또는 주가 ‘워싱턴’과 일치하는 모든 문서를 반환합니다.
export function request(ctx) { return { operation: 'GET', path: '/id/post/_search', params: { headers: {}, queryString: {}, body: { from: 0, size: 50, query: { multi_match: { query: 'washington', fields: ['city', 'state'] }, }, }, }, }; }
변수 전달
참고
이는 요청 핸들러에만 적용됩니다.
요청 핸들러에서 평가의 일부로 변수를 전달할 수도 있습니다. 예를 들어, 다음과 같은 GraphQL 쿼리가 있다고 가정해 보겠습니다.
query { searchForState(state: "washington"){ ... } }
함수 요청 핸들러는 다음과 같을 수 있습니다.
export function request(ctx) { return { operation: 'GET', path: '/id/post/_search', params: { headers: {}, queryString: {}, body: { from: 0, size: 50, query: { multi_match: { query: ctx.args.state, fields: ['city', 'state'] }, }, }, }, }; }