的解析程式對映範本參考 OpenSearch - AWS AppSync

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

的解析程式對映範本參考 OpenSearch

注意

我們現在主要支援 APPSYNC _JS 執行階段及其文件。請考慮在此處使用 APPSYNC _JS 運行時及其指南

Amazon OpenSearch 服務的 AWS AppSync 解析器可讓您使用 GraphQL 存放和擷取帳戶中現有 OpenSearch 服務網域中的資料。此解析器的工作原理是允許您將傳入的 GraphQL 請求映射到服務請求中,然後將 OpenSearch 服務響應映射回 GraphQL。 OpenSearch 本節說明支援之 OpenSearch 服務作業的對應範本。

請求對應範本

大多數的 OpenSearch 服務請求對應範本都有一個共同的結構,其中只有幾個部分變更。下列範例會針對 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 服務會傳送需 AWS AppSync 要轉換為 GraphQL 的回應。

大多數 GraphQL 查詢都在從 OpenSearch 服務響應中查找_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 欄位

注意

這僅適用於請求對應範本。

HTTP AWS AppSync 傳送至 OpenSearch 服務網域的方法HEAD或動詞 (GETPUT、、或DELETE)。POST金鑰與值皆必須為字串。

"operation" : "PUT"

path 欄位

注意

這僅適用於請求對應範本。

來源 OpenSearch 服務要求的搜尋路徑 AWS AppSync。這URL為操作的HTTP動詞形成了一個。金鑰與值皆必須為字串。

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

評估對應範本時,此路徑會作為HTTP要求的一部分傳送,包括 OpenSearch 服務網域。例如,之前的範例可轉譯為:

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

params 欄位

注意

這僅適用於請求對應範本。

用來指定搜尋執行的動作,最常見的方式是在主體內部設定查詢值。不過,有多項其他功能可設定,例如回應的格式。

  • 標頭

    標頭資訊,以金鑰值對形式。金鑰與值皆必須為字串。例如:

    "headers" : { "Content-Type" : "application/json" }
    注意

    AWS AppSync 目前僅支持JSON作為Content-Type.

  • queryString

    指定常用選項的鍵值配對,例如JSON回應的程式碼格式。金鑰與值皆必須為字串。例如,如果你想獲得漂亮的格式JSON,你可以使用:

    "queryString" : { "pretty" : "true" }
  • 本文

    這是請求的主要部分,允許 AWS AppSync 向您的 OpenSearch 服務域創建格式良好的搜索請求。金鑰必須是由物件組成的字串。以下顯示幾個示範。

範例 1

傳回城市符合「seattle」的所有文件:

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

範例 2

傳回所有符合「washington」做為城市或州的文件:

"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,請參閱存取要求標頭