

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# AWS AppSync JavaScript Resolver-Funktionsreferenz für OpenSearch
<a name="resolver-reference-elasticsearch-js"></a>

Mit dem AWS AppSync Resolver für Amazon OpenSearch Service können Sie GraphQL verwenden, um Daten in vorhandenen OpenSearch Service-Domains in Ihrem Konto zu speichern und abzurufen. Dieser Resolver ermöglicht es Ihnen, eine eingehende GraphQL-Anfrage einer Serviceanfrage zuzuordnen und die OpenSearch OpenSearch Serviceantwort dann wieder GraphQL zuzuordnen. In diesem Abschnitt werden die Funktionsanforderungs- und Antworthandler für die unterstützten Serviceoperationen beschrieben. OpenSearch 

## Anforderung
<a name="request-js"></a>

Die meisten OpenSearch Serviceanforderungsobjekte haben eine gemeinsame Struktur, bei der sich nur wenige Teile ändern. Im folgenden Beispiel wird eine Suche in einer OpenSearch Service-Domäne ausgeführt, in der Dokumente vom Typ sind `post` und unter `id` der sie indexiert sind. Die Suchparameter sind im `body`-Abschnitt definiert, viele der gemeinsamen Abfragebestimmungen sind im `query`-Feld definiert. In diesem Beispiel wird nach Dokumenten gesucht, die `"Nadia"`, `"Bailey"` oder beides enthalten, und zwar in dem `author`-Feld eines Dokuments:

```
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' } },
            ],
          },
        },
      },
    },
  };
}
```

## Antwort
<a name="response-mapping-template"></a>

Wie bei anderen Datenquellen sendet OpenSearch Service eine Antwort an AWS AppSync , die in GraphQL konvertiert werden muss.

Die meisten GraphQL-Abfragen suchen nach dem `_source` Feld aus einer OpenSearch Serviceantwort. Da Sie Suchen durchführen können, um entweder ein einzelnes Dokument oder eine Liste von Dokumenten zurückzugeben, gibt es in OpenSearch Service zwei gängige Antwortmuster:

 **Liste der Ergebnisse** 

```
export function response(ctx) {
  const entries = [];
  for (const entry of ctx.result.hits.hits) {
    entries.push(entry['_source']);
  }
  return entries;
}
```

 **Einzelnes Element** 

```
export function response(ctx) {
  return ctx.result['_source']
}
```

## `operation` field
<a name="operation-field"></a>

**Anmerkung**  
Dies gilt nur für den Request-Handler. 

HTTP-Methode oder Verb (GET, POST, PUT, HEAD oder DELETE), das AWS AppSync an die OpenSearch Service-Domäne sendet. Der Schlüssel und der Wert müssen beide Strings sein.

```
"operation" : "PUT"
```

## `path` field
<a name="path-field"></a>

**Anmerkung**  
Dies gilt nur für den Request-Handler. 

Der Suchpfad für eine OpenSearch Serviceanfrage von AWS AppSync. Dies bildet eine URL für das HTTP-Verb der Operation. Der Schlüssel und der Wert müssen beide Strings sein.

```
"path" : "/indexname/type"

"path" : "/indexname/type/_search"
```

Wenn der Anforderungshandler ausgewertet wird, wird dieser Pfad als Teil der HTTP-Anfrage gesendet, einschließlich der OpenSearch Dienstdomäne. Das vorherige Beispiel kann dann beispielsweise so aussehen:

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

## `params` field
<a name="params-field"></a>

**Anmerkung**  
Dies gilt nur für den Request-Handler. 

Wird verwendet, um anzugeben, welche Aktion Ihre Suche durchführt, meistens indem der **Abfragewert** in den **Body** setzt. Es gibt jedoch einige andere Funktionen, die konfiguriert werden können, wie z. B. die Formatierung von Antworten.
+  **Header** 

  Die Header-Informationen, wie beispielsweise Schlüssel-Wert-Paare. Der Schlüssel und der Wert müssen beide Strings sein. Beispiel:

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

   
**Anmerkung**  
AWS AppSync unterstützt derzeit nur JSON als`Content-Type`.
+  **queryString** 

  Schlüssel-Wert-Paare, die allgemeine Optionen angeben, z. B. Codeformatierung für JSON-Antworten. Der Schlüssel und der Wert müssen beide Strings sein. Wenn Sie beispielsweise ein gut formatiertes JSON-Format haben möchten, geben Sie Folgendes an:

  ```
  "queryString" : {
      "pretty" : "true"
  }
  ```
+  **body** 

  Dies ist der Hauptteil Ihrer Anfrage, der es ermöglicht AWS AppSync , eine wohlgeformte Suchanfrage für Ihre OpenSearch Service-Domain zu erstellen. Der Schlüssel muss ein aus einem Objekt bestehender String sein. Ein paar Beispiele werden unten gezeigt.

 **Beispiel 1** 

Rückgabe aller Dokumente, die die Stadt „Seattle“ enthalten:

```
export function request(ctx) {
  return {
    operation: 'GET',
    path: '/id/post/_search',
    params: {
      headers: {},
      queryString: {},
      body: { from: 0, size: 50, query: { match: { city: 'seattle' } } },
    },
  };
}
```

 **Beispiel 2** 

Rückgabe aller Dokumente, die „Washington“ als Stadt oder Staat enthalten:

```
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'] },
        },
      },
    },
  };
}
```

## Variablen übergeben
<a name="passing-variables"></a>

**Anmerkung**  
Dies gilt nur für den Request-Handler. 

Sie können Variablen auch als Teil der Auswertung in Ihrem Request-Handler übergeben. Angenommen, Sie hatten die folgende GraphQL-Abfrage:

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

Der Funktionsanforderungshandler könnte der folgende sein:

```
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'] },
        },
      },
    },
  };
}
```