

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.

# Komprimieren von HTTP-Anfragen in Amazon OpenSearch Service
<a name="gzip"></a>

Sie können HTTP-Anfragen und -Antworten in Amazon OpenSearch Service-Domains mithilfe der GZIP-Komprimierung komprimieren. Die gzip-Komprimierung kann Ihnen dabei helfen, die Größe Ihrer Dokumente zu reduzieren und die Bandbreitennutzung und Latenz zu senken, was zu verbesserten Übertragungsgeschwindigkeiten führt.

Die Gzip-Komprimierung wird für alle Domains unterstützt, auf denen Elasticsearch 6.0 OpenSearch oder höher ausgeführt wird. Einige OpenSearch Clients verfügen über eine integrierte Unterstützung für die Gzip-Komprimierung, und viele Programmiersprachen verfügen über Bibliotheken, die den Prozess vereinfachen.

## Aktivieren der gzip-Komprimierung
<a name="gzip-enable"></a>

Nicht zu verwechseln mit ähnlichen OpenSearch Einstellungen, `http_compression.enabled` ist OpenSearch dienstspezifisch und aktiviert oder deaktiviert die GZIP-Komprimierung auf einer Domain. Domains, die auf Elasticsearch OpenSearch 7 laufen. Bei *x* ist die GZIP-Komprimierung standardmäßig aktiviert, wohingegen bei Domains, auf denen Elasticsearch 6 ausgeführt wird. *x* hat sie standardmäßig deaktiviert.

Um die gzip-Komprimierung zu aktivieren, senden Sie die folgende Anfrage:

```
PUT _cluster/settings
{
  "persistent" : {
    "http_compression.enabled": true
  }
}
```

Anforderungen an `_cluster/settings` müssen unkomprimiert sein. Daher müssen Sie möglicherweise eine separate Client- oder Standard-HTTP-Anforderung verwenden, um Clustereinstellungen zu aktualisieren.

Senden Sie die folgende Anfrage, um zu bestätigen, dass Sie die GZIP-Komprimierung erfolgreich aktiviert haben:

```
GET _cluster/settings?include_defaults=true
```

Stellen Sie sicher, dass Sie die folgende Einstellung in der Antwort sehen:

```
...
"http_compression": {
  "enabled": "true"
}
...
```

## Erforderliche Header
<a name="gzip-headers"></a>

Wenn Sie einen gzip-komprimierten Anforderungstext einschließen, behalten Sie den Standard-`Content-Type: application/json`-Header und fügen Sie den `Content-Encoding: gzip`-Header hinzu. Um eine gzip-komprimierte Antwort zu akzeptieren, fügen Sie den `Accept-Encoding: gzip`-Header auch hinzu. Wenn ein OpenSearch Client die Gzip-Komprimierung unterstützt, schließt er diese Header wahrscheinlich automatisch ein.

## Beispiel-Code (Python 3)
<a name="gzip-code"></a>

Im folgenden Beispiel wird [opensearch-py](https://pypi.org/project/opensearch-py/) verwendet, um die Komprimierung durchzuführen und die Anforderung zu senden. Dieser Code signiert die Anforderung mit Ihren IAM-Anmeldeinformationen. 

```
from opensearchpy import OpenSearch, RequestsHttpConnection
from requests_aws4auth import AWS4Auth
import boto3

host = '' # e.g. my-test-domain.us-east-1.es.amazonaws.com
region = '' # e.g. us-west-1
service = 'es'
credentials = boto3.Session().get_credentials()
awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, region, service, session_token=credentials.token)

# Create the client.
search = OpenSearch(
    hosts = [{'host': host, 'port': 443}],
    http_auth = awsauth,
    use_ssl = True,
    verify_certs = True,
    http_compress = True, # enables gzip compression for request bodies
    connection_class = RequestsHttpConnection
)

document = {
  "title": "Moneyball",
  "director": "Bennett Miller",
  "year": "2011"
}

# Send the request.
print(search.index(index='movies', id='1', body=document, refresh=True))

# print(search.index(index='movies', doc_type='_doc', id='1', body=document, refresh=True))
```

Alternativ können Sie die richtigen Header angeben, den Anforderungstext selbst komprimieren und eine Standard-HTTP-Bibliothek wie [Anforderungen](https://2.python-requests.org) verwenden. Dieser Code signiert die Anforderung mit grundlegenden HTTP-Anmeldeinformationen, die Ihre Domäne möglicherweise unterstützt, wenn Sie eine [differenzierte Zugriffssteuerung](fgac.md) verwenden.

```
import requests
import gzip
import json

base_url = '' # The domain with https:// and a trailing slash. For example, https://my-test-domain.us-east-1.es.amazonaws.com/
auth = ('master-user', 'master-user-password') # For testing only. Don't store credentials in code.

headers = {'Accept-Encoding': 'gzip', 'Content-Type': 'application/json',
           'Content-Encoding': 'gzip'}

document = {
  "title": "Moneyball",
  "director": "Bennett Miller",
  "year": "2011"
}

# Compress the document.
compressed_document = gzip.compress(json.dumps(document).encode())

# Send the request.
path = 'movies/_doc?refresh=true'
url = base_url + path
response = requests.post(url, auth=auth, headers=headers, data=compressed_document)
print(response.status_code)
print(response.text)
```