

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.

# Amazon Athena Athena-Anschluss OpenSearch
<a name="connectors-opensearch"></a>

OpenSearch Dienst

Der Amazon OpenSearch Athena-Connector ermöglicht Amazon Athena die Kommunikation mit Ihren OpenSearch Instances, sodass Sie SQL verwenden können, um Ihre OpenSearch Daten abzufragen.

Dieser Connector kann bei Glue-Datenkatalog als Verbundkatalog registriert werden. Er unterstützt in Lake Formation definierte Datenzugriffskontrollen auf Katalog-, Datenbank-, Tabellen-, Spalten-, Zeilen- und Tagebene. Dieser Konnektor verwendet Glue Connections, um die Konfigurationseigenschaften in Glue zu zentralisieren.

**Anmerkung**  
Aufgrund eines bekannten Problems kann der OpenSearch Connector nicht mit einer VPC verwendet werden.

Wenn Sie Lake Formation in Ihrem Konto aktiviert haben, AWS Serverless Application Repository muss die IAM-Rolle für Ihren Athena Federated Lambda Connector, den Sie in der bereitgestellt haben, Lesezugriff in Lake Formation auf den haben. AWS Glue Data Catalog

## Voraussetzungen
<a name="connectors-opensearch-prerequisites"></a>
+ Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Für weitere Informationen siehe [Eine Datenquellenverbindung erstellen](connect-to-a-data-source.md) oder [Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen](connect-data-source-serverless-app-repo.md).

## Bedingungen
<a name="connectors-opensearch-terms"></a>

Die folgenden Begriffe beziehen sich auf den Konnektor. OpenSearch 
+ **Domain** — Ein Name, den dieser Connector dem Endpunkt Ihrer OpenSearch Instance zuordnet. Die Domain wird auch als Datenbankname verwendet. Für OpenSearch Instances, die innerhalb des Amazon OpenSearch Service definiert sind, ist die Domain automatisch auffindbar. Für andere Instances müssen Sie eine Zuordnung zwischen dem Domainnamen und dem Endpunkt bereitstellen.
+ **Index** — Eine in Ihrer OpenSearch Instance definierte Datenbanktabelle.
+ **Mapping** – Wenn ein Index eine Datenbanktabelle ist, dann ist das Mapping sein Schema (d. h. die Definitionen seiner Felder und Attribute).

  Dieser Konnektor unterstützt sowohl das Abrufen von Metadaten aus der OpenSearch Instanz als auch von der AWS Glue Data Catalog. Wenn der Connector eine AWS Glue Datenbank und eine Tabelle findet, die Ihren OpenSearch Domänen- und Indexnamen entsprechen, versucht der Connector, sie für die Schemadefinition zu verwenden. Wir empfehlen Ihnen, Ihre AWS Glue Tabelle so zu erstellen, dass sie eine Obermenge aller Felder in Ihrem OpenSearch Index darstellt.
+ **Dokument** – Ein Datensatz innerhalb einer Datenbanktabelle.
+ **Datenstrom** – Zeitbasierte Daten, die aus mehreren Hintergrundindizes bestehen. Weitere Informationen finden Sie unter [Datenstreams](https://opensearch.org/docs/latest/dashboards/im-dashboards/datastream/) in der OpenSearch Dokumentation und [Erste Schritte mit Datenströmen](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/data-streams.html#data-streams-example) im *Amazon OpenSearch Service Developer Guide*.
**Anmerkung**  
Da Datenstrom-Indizes intern von Open Search erstellt und verwaltet werden, wählt der Konnektor die Schemazuordnung aus dem ersten verfügbaren Index aus. Aus diesem Grund empfehlen wir dringend, eine AWS Glue Tabelle als zusätzliche Metadatenquelle einzurichten. Weitere Informationen finden Sie unter [Einrichten von Datenbanken und Tabellen in AWS Glue](#connectors-opensearch-setting-up-databases-and-tables-in-aws-glue). 

## Parameters
<a name="connectors-opensearch-parameters"></a>

Verwenden Sie die Parameter in diesem Abschnitt, um den OpenSearch Konnektor zu konfigurieren.

**Anmerkung**  
Athena-Datenquellenconnectors, die am 3. Dezember 2024 und später erstellt wurden, verwenden AWS Glue Verbindungen.  
Die unten aufgeführten Parameternamen und Definitionen beziehen sich auf Athena-Datenquellen-Connectors, die vor dem 3. Dezember 2024 erstellt wurden. Diese können von ihren entsprechenden [AWS Glue -Verbindungseigenschaften](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) abweichen. Verwenden Sie ab dem 3. Dezember 2024 die folgenden Parameter nur, wenn Sie eine frühere Version eines Athena-Datenquellen-Connectors [manuell bereitstellen](connect-data-source-serverless-app-repo.md).

### AWS Glue Data Catalog föderierte Konnektoren
<a name="opensearch-gc"></a>

Es wird empfohlen, einen OpenSearch Konnektor mithilfe eines Glue-Verbindungsobjekts zu konfigurieren. Setzen Sie dazu die `glue_connection` Umgebungsvariable des OpenSearch Connectors Lambda auf den Namen der zu verwendenden Glue-Verbindung.

**Eigenschaften von Glue Connections**

Verwenden Sie den folgenden Befehl, um das Schema für ein Glue-Connection-Objekt zu erhalten. Dieses Schema enthält alle Parameter, mit denen Sie Ihre Verbindung steuern können.

```
aws glue describe-connection-type --connection-type OPENSEARCH
```

**Lambda-Umgebungseigenschaften**

Die folgenden Lambda-Umgebungseigenschaften gelten nur, wenn Sie den Connector mit einer Lambda-Funktion in Ihrem Konto verwenden.
+  **glue\_connection** – Gibt den Namen der Glue-Connection an, die dem Verbund-Connector zugeordnet ist. 

**Anmerkung**  
Alle Connectoren, die eine AWS Glue Data Catalog Verbundverbindung verwenden, müssen diese AWS Secrets Manager zum Speichern von Anmeldeinformationen verwenden.
Der mithilfe einer AWS Glue Data Catalog Verbundverbindung erstellte OpenSearch Connector unterstützt die Verwendung eines Multiplexing-Handlers nicht.
Der mithilfe einer OpenSearch AWS Glue Data Catalog Verbundverbindung erstellte Konnektor unterstützt nur 2. `ConnectionSchemaVersion`

### Verbundkonnektoren für den Athena-Datenkatalog
<a name="opensearch-legacy"></a>
+ **spill\_bucket** – Gibt den Amazon S3-Bucket für Daten an, die die Lambda-Funktionsgrenzen überschreiten.
+ **spill\_prefix** – (Optional) Ist standardmäßig ein Unterordner im angegebenen `spill_bucket` genannt `athena-federation-spill`. Wir empfehlen Ihnen, einen Amazon-S3-[Speicher-Lebenszyklus](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) an dieser Stelle zu konfigurieren, um die Überlaufe zu löschen, die älter als eine festgelegte Anzahl von Tagen oder Stunden sind.
+ **spill\_put\_request\_headers** – (Optional) Eine JSON-codierte Zuordnung von Anforderungsheadern und Werten für die Amazon-S3-`putObject`-Anforderung, die für den Überlauf verwendet wird (z. B. `{"x-amz-server-side-encryption" : "AES256"}`). Weitere mögliche Header finden Sie [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)in der *Amazon Simple Storage Service API-Referenz.*
+ **kms\_key\_id** – (Optional) Standardmäßig werden alle Daten, die an Amazon S3 gesendet werden, mit dem AES-GCM-authentifizierten Verschlüsselungsmodus und einem zufällig generierten Schlüssel verschlüsselt. Damit Ihre Lambda-Funktion stärkere Verschlüsselungsschlüssel verwendet, die von KMS generiert werden, wie`a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, können Sie eine ID einer Verschlüsselung angeben.
+ **disable\_spill\_encryption** – (Optional) Bei Einstellung auf `True`, wird die Spill-Verschlüsselung deaktiviert. Die Standardeinstellung ist `False`, sodass Daten, die an S3 übertrragen werden, mit AES-GCM verschlüsselt werden - entweder mit einem zufällig generierten Schlüssel oder mit KMS zum Generieren von Schlüsseln. Das Deaktivieren der Überlauf-Verschlüsselung kann die Leistung verbessern, insbesondere wenn Ihr Überlauf-Standort eine [serverseitige Verschlüsselung](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html) verwendet.
+ **disable\_glue** — (Optional) Falls vorhanden und auf true gesetzt, versucht der Connector nicht, zusätzliche Metadaten von abzurufen. AWS Glue
+ **query\_timeout\_cluster** – Der Timeout-Zeitraum in Sekunden für Cluster-Integritätsabfragen, die bei der Generierung parallel Scans verwendet werden.
+ **query\_timeout\_search** – Die Zeitüberschreitungsdauer in Sekunden für Suchanfragen, die beim Abrufen von Dokumenten aus einem Index verwendet werden.
+ **auto\_discover\_endpoint** – Boolesch. Der Standardwert ist `true`. Wenn Sie den OpenSearch Amazon-Service verwenden und diesen Parameter auf true setzen, kann der Connector Ihre Domains und Endpunkte automatisch erkennen, indem er die entsprechenden Describe- oder List-API-Operationen für den OpenSearch Service aufruft. Für jede andere Art von OpenSearch Instance (z. B. selbst gehostet) müssen Sie die zugehörigen Domain-Endpunkte in der Variablen angeben. `domain_mapping` Falls`auto_discover_endpoint=true`, verwendet der Connector AWS Anmeldeinformationen, um sich beim Service zu authentifizieren. OpenSearch Andernfalls ruft der Connector die Anmeldeinformationen für Benutzername und Passwort AWS Secrets Manager über die `domain_mapping` Variable ab.
+ **domain\_mapping** – Wird nur verwendet, wenn `auto_discover_endpoint` auf „false“ (falsch) gesetzt ist und die Zuordnung zwischen Domainnamen und den zugehörigen Endpunkten definiert. Die `domain_mapping` Variable kann mehrere OpenSearch Endpunkte im folgenden Format aufnehmen:

  ```
  domain1=endpoint1,domain2=endpoint2,domain3=endpoint3,...       
  ```

  Für die Authentifizierung an einem OpenSearch Endpunkt unterstützt der Konnektor Ersatzzeichenfolgen, die in dem Format `${SecretName}` eingegeben werden, aus dem der Benutzername und das Passwort abgerufen wurden. AWS Secrets Manager Das Geheimnis sollte im folgenden JSON-Format gespeichert werden:

  ```
  { "username": "your_username", "password": "your_password" }
  ```

  Der Connector analysiert diese JSON-Struktur automatisch, um die Anmeldeinformationen abzurufen.
**Wichtig**  
Als bewährte Sicherheitsmethode sollten Sie keine fest kodierten Anmeldeinformationen in Ihren Umgebungsvariablen oder Verbindungszeichenfolgen verwenden. *Informationen zum Verschieben von hartcodierten Geheimnissen nach finden Sie im AWS Secrets Manager Benutzerhandbuch unter [Verschieben von hartcodierten AWS Secrets Manager Geheimnissen nach](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html).AWS Secrets Manager *

  Im folgenden Beispiel wird das `opensearch-creds`-Secret verwendet.

  ```
  movies=https://${opensearch-creds}:search-movies-ne...qu---us-east-1---es.amazonaws.com     
  ```

  Bei der Ausführung wird `${opensearch-creds}` wie im folgenden Beispiel als Benutzername und -Passwort wiedergegeben.

  ```
  movies=https://myusername@mypassword:search-movies-ne...qu---us-east-1---es.amazonaws.com
  ```

  Im `domain_mapping`-Parameter kann jedes Domain-Endpunkt-Paar ein anderes Secret verwenden. Das Geheimnis selbst muss im Format {{user\_name}} @ angegeben werden. {{password}} Obwohl das Passwort eingebettete `@` Zeichen enthalten kann, `@` dient das erste Zeichen als Trennzeichen von{{user\_name}}.

  Es ist auch wichtig zu beachten, dass das Komma (,) und das Gleichheitszeichen (=) von diesem Konnektor als Trennzeichen für die Domain-Endpunkt-Paare verwendet werden. Aus diesem Grund sollten Sie sie nicht innerhalb des gespeicherten Secrets verwenden.

## Einrichten von Datenbanken und Tabellen in AWS Glue
<a name="connectors-opensearch-setting-up-databases-and-tables-in-aws-glue"></a>

Der Konnektor ruft mithilfe von AWS Glue oder OpenSearch Metadateninformationen ab. Sie können eine AWS Glue Tabelle als zusätzliche Quelle für Metadatendefinitionen einrichten. Um diese Funktion zu aktivieren, definieren Sie eine AWS Glue Datenbank und eine Tabelle, die der Domäne und dem Index der Quelle entsprechen, die Sie ergänzen möchten. Der Connector kann auch die in der OpenSearch Instanz gespeicherten Metadatendefinitionen nutzen, indem er die Zuordnung für den angegebenen Index abruft.

### Definieren von Metadaten für Arrays in OpenSearch
<a name="connectors-opensearch-defining-metadata-for-arrays-in-opensearch"></a>

OpenSearch hat keinen speziellen Array-Datentyp. Jedes Feld kann null oder mehr Werte enthalten, sofern sie vom gleichen Datentyp sind. Wenn Sie OpenSearch als Quelle für die Metadatendefinition verwenden möchten, müssen Sie eine `_meta` Eigenschaft für alle mit Athena verwendeten Indizes für die Felder definieren, die als Liste oder Array betrachtet werden sollen. Wenn Sie diesen Schritt nicht ausführen, geben Abfragen nur das erste Element im Listenfeld aus. Wenn Sie die `_meta`-Eigenschaft angeben, sollten Feldnamen sollten vollständig für verschachtelte JSON-Strukturen qualifiziert sein (z. B. `address.street`, wobei `street` ein verschachteltes Feld innerhalb einer `address`-Struktur ist).

Im folgenden Beispiel werden `actor`- und `genre`-Listen in der `movies`-Tabelle definiert.

```
PUT movies/_mapping 
{ 
  "_meta": { 
    "actor": "list", 
    "genre": "list" 
  } 
}
```

### Datentypen
<a name="connectors-opensearch-data-types"></a>

Der OpenSearch Konnektor kann Metadatendefinitionen entweder aus der Instanz AWS Glue oder aus der OpenSearch Instanz extrahieren. Der Konnektor verwendet das Mapping in der folgenden Tabelle, um die Definitionen in Apache Arrow-Datentypen zu konvertieren, einschließlich der im folgenden Abschnitt aufgeführten Punkte.


****  

| OpenSearch | Apache Arrow | AWS Glue | 
| --- | --- | --- | 
| Text, Schlüsselwort, binär | VARCHAR | string | 
| long | BIGINT | bigint | 
| scaled\_float | BIGINT | SCALED\_FLOAT (...) | 
| Ganzzahl | INT | int | 
| short | SMALLINT | smallint | 
|  Byte | TINYINT | tinyint | 
| double | FLOAT8 | double | 
| float, half\_float | FLOAT4 | float | 
| Boolean | BIT | boolesch | 
| Datum, date\_nanos | DATUMMILLI | Zeitstempel | 
| JSON-Struktur | STRUCT | STRUCT | 
| \_meta (Weitere Informationen finden Sie im Abschnitt [Definieren von Metadaten für Arrays in OpenSearch](#connectors-opensearch-defining-metadata-for-arrays-in-opensearch).) | LIST | ARRAY | 

#### Hinweise zu Datentypen
<a name="connectors-opensearch-data-type-considerations-and-limitations"></a>
+ Derzeit unterstützt der Konnektor nur die in der vorherigen Tabelle aufgeführten AWS Glue Datentypen OpenSearch und.
+ Ein `scaled_float` ist eine Gleitkommazahl, die mit einem festen doppelten Skalierungsfaktor skaliert und als `BIGINT` in Apache Arrow dargestellt wird. Beispielsweise wird 0,756 mit einem Skalierungsfaktor von 100 auf 76 gerundet.
+ Um einen `scaled_float` in zu definieren AWS Glue, müssen Sie den `array` Spaltentyp auswählen und das Feld im Format SCALED\_FLOAT () deklarieren. {{scaling\_factor}}

  Das folgende Beispiele sind gültig:

  ```
  SCALED_FLOAT(10.51) 
  SCALED_FLOAT(100) 
  SCALED_FLOAT(100.0)
  ```

  Das folgende Beispiele sind nicht gültig:

  ```
  SCALED_FLOAT(10.) 
  SCALED_FLOAT(.5)
  ```
+ Bei der Konvertierung von `date_nanos` zu `DATEMILLI` werden Nanosekunden auf die nächste Millisekunde gerundet. Zulässige Werte für `date` und `date_nanos` beinhalten, sind aber nicht beschränkt auf, die folgenden Formate:

  ```
  "2020-05-18T10:15:30.123456789" 
  "2020-05-15T06:50:01.123Z" 
  "2020-05-15T06:49:30.123-05:00" 
  1589525370001 (epoch milliseconds)
  ```
+ An OpenSearch `binary` ist eine Zeichenkettendarstellung eines Binärwerts, der mit a codiert `Base64` und in ein umgewandelt wird. `VARCHAR`

## Ausführen von SQL-Abfragen
<a name="connectors-opensearch-running-sql-queries"></a>

Im Folgenden finden Sie Beispiele für DDL-Abfragen, die Sie mit diesem Konnektor verwenden können. In den Beispielen {{function\_name}} entspricht dies dem Namen Ihrer Lambda-Funktion, {{domain}} ist der Name der Domain, die Sie abfragen möchten, und {{index}} ist der Name Ihres Indexes.

```
SHOW DATABASES in `lambda:{{function_name}}`
```

```
SHOW TABLES in `lambda:{{function_name}}`.{{domain}}
```

```
DESCRIBE `lambda:{{function_name}}`.{{domain}}.{{index}}
```

## Leistung
<a name="connectors-opensearch-performance"></a>

Der OpenSearch Athena-Anschluss unterstützt Shard-basierte parallel Scans. Der Connector verwendet die von der OpenSearch Instanz abgerufenen Cluster-Integritätsinformationen, um mehrere Anfragen für eine Dokumentensuchabfrage zu generieren. Die Anforderungen werden für jeden Shard aufgeteilt und gleichzeitig ausgeführt.

Der Konnektor gibt auch Prädikate als Teil seiner Dokumentensuchabfragen aus. Die folgende Beispielabfrage und das folgende Prädikat zeigen, wie der Konnektor Prädikat-Pushdown verwendet.

**Query**

```
SELECT * FROM "lambda:elasticsearch".movies.movies 
WHERE year >= 1955 AND year <= 1962 OR year = 1996
```

**Prädikat**

```
(_exists_:year) AND year:([1955 TO 1962] OR 1996)
```

## Pass-Through-Abfragen
<a name="connectors-opensearch-passthrough-queries"></a>

Der OpenSearch Connector unterstützt [Passthrough-Abfragen](federated-query-passthrough.md) und verwendet die Query-DSL-Sprache. [Weitere Informationen zur Abfrage mit Query DSL finden Sie unter Query DSL in der Elasticsearch-Dokumentation oder unter [Query DSL](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html) in der Dokumentation.](https://opensearch.org/docs/latest/query-dsl/) OpenSearch 

Verwenden Sie die folgende Syntax, um Passthrough-Abfragen mit dem OpenSearch Konnektor zu verwenden:

```
SELECT * FROM TABLE(
        system.query(
            schema => '{{schema_name}}',
            index => '{{index_name}}',
            query => "{{{query_string}}}"
        ))
```

Das folgende OpenSearch Beispiel für eine Passthrough-Abfrage filtert nach Mitarbeitern mit aktivem Beschäftigungsstatus im `employee` Index des `default` Schemas.

```
SELECT * FROM TABLE(
        system.query(
            schema => 'default',
            index => 'employee',
            query => "{ ''bool'':{''filter'':{''term'':{''status'': ''active''}}}}"
        ))
```

## Weitere Ressourcen
<a name="connectors-opensearch-additional-resources"></a>
+ Einen Artikel zur Verwendung des Amazon OpenSearch Athena-Connectors zur Abfrage von Daten in Amazon OpenSearch Service und Amazon S3 in einer einzigen [Abfrage finden Sie unter Daten in Amazon OpenSearch Service mit SQL von Amazon Athena](https://aws.amazon.com/blogs/big-data/query-data-in-amazon-opensearch-service-using-sql-from-amazon-athena/) abfragen im *AWS Big Data-Blog*.
+ Weitere Informationen zu diesem Connector finden Sie auf [der entsprechenden Website auf GitHub .com.](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-elasticsearch)