Referência de modelo de mapeamento do resolvedor para OpenSearch - AWS AppSync

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Referência de modelo de mapeamento do resolvedor para OpenSearch

nota

Agora, oferecemos suporte principalmente ao runtime do APPSYNC_JS e sua documentação. Considere usar o runtime do APPSYNC_JS e seus guias disponíveis aqui.

O resolvedor do AWS AppSync para o Amazon OpenSearch Service permite usar o GraphQL para armazenar e recuperar dados em domínios do OpenSearch Service existentes na sua conta. Esse resolvedor funciona permitindo que você mapeie uma solicitação do GraphQL de entrada em uma solicitação do OpenSearch Service e, em seguida, mapeie a resposta do OpenSearch Service de volta para o GraphQL. Esta seção descreve os modelos de mapeamento para operações do OpenSearch Service compatíveis.

Modelo de mapeamento da solicitação

A maioria dos modelos de mapeamento da solicitação do OpenSearch Service têm uma estrutura comum em que apenas algumas peças mudam. O exemplo a seguir executa uma pesquisa em um domínio do OpenSearch Service, onde os documentos são organizados em um índice chamado post. Os parâmetros de pesquisa são definidos na seção body, com muitas das cláusulas de consulta comuns definidas no campo query. Esse exemplo pesquisará documentos que contém "Nadia", "Bailey" ou ambos no campo author de um documento:

{ "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" }} ] } } } } }

Modelo de mapeamento da resposta

Assim como ocorre com outras fontes de dados, o OpenSearch Service envia uma resposta à AWS que precisa ser convertida em GraphQL.

A maioria das consultas do GraphQL estão buscando o campo _source de uma resposta do OpenSearch Service. Como você pode fazer pesquisas para retornar um documento individual ou uma lista de documentos, existem dois modelos de mapeamento da resposta comuns usados no OpenSearch Service:

Lista de resultados

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

Item individual

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

operation field

(somente modelo de mapeamento da SOLICITAÇÃO)

Método ou verbo HTTP (GET, POST, PUT, HEAD ou DELETE) que o AWS AppSync envia ao domínio do OpenSearch Service. A chave e o valor devem ser strings.

"operation" : "PUT"

path field

(somente modelo de mapeamento da SOLICITAÇÃO)

O caminho de pesquisa para uma solicitação do OpenSearch Service do AWS AppSync. Isso forma um URL para o verbo HTTP da operação. A chave e o valor devem ser strings.

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

Quando o modelo de mapeamento é avaliado, esse caminho é enviado como parte da solicitação HTTP, incluindo o domínio do OpenSearch Service. Por exemplo, o exemplo anterior pode ser traduzido como:

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

params field

(somente modelo de mapeamento da SOLICITAÇÃO)

Usado para especificar qual é executada pela pesquisa, geralmente definindo o valor consulta dentro do corpo. No entanto, existem vários outros recursos que podem ser configurados, como a formatação de respostas.

  • headers

    As informações do cabeçalho, como pares de chave/valor. A chave e o valor devem ser strings. Por exemplo:

    "headers" : { "Content-Type" : "application/json" }
    nota

    Atualmente o AWS AppSync oferece suporte apenas para JSON como um Content-Type.

  • queryString

    Os pares de chave/valor que especificam opções comuns, como formatação de código para respostas JSON. A chave e o valor devem ser strings. Por exemplo, se quiser obter JSON bem formatado, use:

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

    Essa é a parte principal da sua solicitação, permitindo que o AWS AppSync elabore uma solicitação de pesquisa bem formatada para o domínio do OpenSearch Service. A chave deve ser uma string composta por um objeto. Algumas demonstrações são mostradas abaixo.

Exemplo 1

Retornar todos os documentos com uma cidade correspondente a "seattle":

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

Exemplo 2

Retornar todos os documentos correspondentes a "washington" como a cidade ou o estado:

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

Envio de variáveis

(somente modelo de mapeamento da SOLICITAÇÃO)

Você também pode enviar variáveis como parte da avaliação na instrução da VTL. Por exemplo, digamos que tenha uma consulta do GraphQL como a seguinte:

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

O modelo de mapeamento pode tomar o estado como um argumento:

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

Para obter uma lista de utilitários que podem ser inclusos na VTL, consulte Acessar cabeçalhos da solicitação.