View a markdown version of this page

Der Amazon Neptune HTTPS-Endpunkt OpenCypher - Amazon Neptune

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.

Der Amazon Neptune HTTPS-Endpunkt OpenCypher

Anmerkung

Neptune unterstützt derzeit keine REST-API-Anfragen HTTP/2 . Kunden müssen HTTP/1.1 sie verwenden, wenn sie eine Verbindung zu Endpunkten herstellen.

OpenCypher Lese- und Schreibabfragen auf dem HTTPS-Endpunkt

Der OpenCypher HTTPS-Endpunkt unterstützt Lese- und Aktualisierungsabfragen mit der Methode GET und der POST Methode. Die Methoden DELETE und PUT werden nicht unterstützt.

In den folgenden Anweisungen erfahren Sie, wie Sie mithilfe des curl Befehls und HTTPS eine Verbindung zum OpenCypher Endpunkt herstellen. Sie müssen diese Anweisungen für eine Amazon-EC2-Instance befolgen, die sich in derselben Virtual Private Cloud (VPC) wie Ihre Neptune-DB-Instance befindet.

Die Syntax lautet wie folgt:

HTTPS://(the server):(the port number)/openCypher

Hier ist ein Beispiel für eine Leseabfrage:

AWS CLI
aws neptunedata execute-open-cypher-query \ --endpoint-url https://your-neptune-endpoint:port \ --open-cypher-query "MATCH (n1) RETURN n1"

Weitere Informationen finden Sie unter https://docs.aws.amazon.com/cli/latest/reference/neptunedata/execute-open-cypher-query.html execute-open-cypher-query in der Befehlsreferenz. AWS CLI

SDK
import boto3 from botocore.config import Config client = boto3.client( 'neptunedata', endpoint_url='https://your-neptune-endpoint:port', config=Config(read_timeout=None, retries={'total_max_attempts': 1}) ) response = client.execute_open_cypher_query( openCypherQuery='MATCH (n1) RETURN n1' ) print(response['results'])

AWS SDK-Beispiele in anderen Sprachen finden Sie unter. AWS SDK

awscurl
awscurl https://your-neptune-endpoint:port/openCypher \ --region us-east-1 \ --service neptune-db \ -X POST \ -d "query=MATCH (n1) RETURN n1"
Anmerkung

In diesem Beispiel wird davon ausgegangen, dass Ihre AWS Anmeldeinformationen in Ihrer Umgebung konfiguriert sind. us-east-1Ersetzen Sie durch die Region Ihres Neptune-Clusters.

curl
curl https://your-neptune-endpoint:port/openCypher \ -d "query=MATCH (n1) RETURN n1"

Hier ist eine write/update Beispielabfrage:

AWS CLI
aws neptunedata execute-open-cypher-query \ --endpoint-url https://your-neptune-endpoint:port \ --open-cypher-query "CREATE (n:Person { age: 25 })"

Weitere Informationen finden Sie unter https://docs.aws.amazon.com/cli/latest/reference/neptunedata/execute-open-cypher-query.html execute-open-cypher-query in der Befehlsreferenz. AWS CLI

SDK
import boto3 from botocore.config import Config client = boto3.client( 'neptunedata', endpoint_url='https://your-neptune-endpoint:port', config=Config(read_timeout=None, retries={'total_max_attempts': 1}) ) response = client.execute_open_cypher_query( openCypherQuery='CREATE (n:Person { age: 25 })' ) print(response['results'])

AWS SDK-Beispiele in anderen Sprachen finden Sie unter. AWS SDK

awscurl
awscurl https://your-neptune-endpoint:port/openCypher \ --region us-east-1 \ --service neptune-db \ -X POST \ -d "query=CREATE (n:Person { age: 25 })"
Anmerkung

In diesem Beispiel wird davon ausgegangen, dass Ihre AWS Anmeldeinformationen in Ihrer Umgebung konfiguriert sind. us-east-1Ersetzen Sie durch die Region Ihres Neptune-Clusters.

curl
curl https://your-neptune-endpoint:port/openCypher \ -d "query=CREATE (n:Person { age: 25 })"

Das standardmäßige OpenCypher JSON-Ergebnisformat

Das folgende JSON-Format wird entweder standardmäßig oder durch explizites Festlegen des Anforderungs-Headers auf Accept: application/json zurückgegeben. Dieses Format soll mithilfe nativer Features der meisten Bibliotheken leicht in Objekte geparst werden können.

Das zurückgegebene JSON-Dokument enthält ein einzelnes Feld (results), das die Abfragerückgabewerte enthält. Die folgenden Beispiele zeigen die JSON-Formatierung häufiger Werte.

Beispiel für eine Wertantwort:

{ "results": [ { "count(a)": 121 } ] }

Beispiel für eine Knotenantwort:

{ "results": [ { "a": { "~id": "22", "~entityType": "node", "~labels": [ "airport" ], "~properties": { "desc": "Seattle-Tacoma", "lon": -122.30899810791, "runways": 3, "type": "airport", "country": "US", "region": "US-WA", "lat": 47.4490013122559, "elev": 432, "city": "Seattle", "icao": "KSEA", "code": "SEA", "longest": 11901 } } } ] }

Beispiel für eine Beziehungsantwort:

{ "results": [ { "r": { "~id": "7389", "~entityType": "relationship", "~start": "22", "~end": "151", "~type": "route", "~properties": { "dist": 956 } } } ] }

Beispiel für eine Pfadantwort:

{ "results": [ { "p": [ { "~id": "22", "~entityType": "node", "~labels": [ "airport" ], "~properties": { "desc": "Seattle-Tacoma", "lon": -122.30899810791, "runways": 3, "type": "airport", "country": "US", "region": "US-WA", "lat": 47.4490013122559, "elev": 432, "city": "Seattle", "icao": "KSEA", "code": "SEA", "longest": 11901 } }, { "~id": "7389", "~entityType": "relationship", "~start": "22", "~end": "151", "~type": "route", "~properties": { "dist": 956 } }, { "~id": "151", "~entityType": "node", "~labels": [ "airport" ], "~properties": { "desc": "Ontario International Airport", "lon": -117.600997924805, "runways": 2, "type": "airport", "country": "US", "region": "US-CA", "lat": 34.0559997558594, "elev": 944, "city": "Ontario", "icao": "KONT", "code": "ONT", "longest": 12198 } } ] } ] }

Optionale HTTP-Header am Ende für mehrteilige Antworten OpenCypher

Diese Funktion ist ab Version 1.4.5.0 der Neptune-Engine verfügbar. https://docs.aws.amazon.com/releases/release-1.4.5.0.xml

Die HTTP-Antwort auf OpenCypher Abfragen und Aktualisierungen wird in der Regel in mehreren Abschnitten zurückgegeben. Wenn nach dem Senden der ersten Antwortblöcke (mit einem HTTP-Statuscode von 200) Fehler auftreten, kann es schwierig sein, das Problem zu diagnostizieren. Standardmäßig meldet `Neptune solche Fehler, indem es eine Fehlermeldung an den Nachrichtentext anhängt, der aufgrund des Streaming-Charakters der Antwort beschädigt sein kann.

Verwendung nachgestellter Header

Um die Fehlererkennung und -diagnose zu verbessern, können Sie nachfolgende Header aktivieren, indem Sie einen Trailer-Header mit Transfer-Encoding (TE) (te: trailers) in Ihre Anfrage aufnehmen. Anschließend fügt Neptune zwei neue Header-Felder in die Trailing-Header der Antwortblöcke ein:

  • X-Neptune-Status— enthält den Antwortcode gefolgt von einem Kurznamen. Im Erfolgsfall wäre der nachgestellte Header beispielsweise: X-Neptune-Status: 200 OK. Im Falle eines Fehlers wäre der Antwortcode ein Neptune-Engine-Fehlercode wie. X-Neptune-Status: 500 TimeLimitExceededException

  • X-Neptune-Detail— ist leer für erfolgreiche Anfragen. Im Fehlerfall ist die JSON-Fehlermeldung enthalten. Da in HTTP-Header-Werten nur ASCII-Zeichen zulässig sind, ist die JSON-Zeichenfolge URL-codiert. Die Fehlermeldung wird weiter an die Antwortmeldung angefügt.

Weitere Informationen finden Sie auf der MDN-Seite zu TE-Anforderungsheadern.

OpenCypher Beispiel für die Verwendung nachgestellter Header

Dieses Beispiel zeigt, wie nachfolgende Header bei der Diagnose einer Abfrage helfen, die ihr Zeitlimit überschreitet:

curl --raw 'https://your-neptune-endpoint:port/openCypher' \ -H 'TE: trailers' \ -d 'query=MATCH(n) RETURN n.firstName' Output: < HTTP/1.1 200 OK < transfer-encoding: chunked < trailer: X-Neptune-Status, X-Neptune-Detail < content-type: application/json;charset=UTF-8 < < { "results": [{ "n.firstName": "Hossein" }, { "n.firstName": "Jan" }, { "n.firstName": "Miguel" }, { "n.firstName": "Eric" }, {"detailedMessage":"Operation terminated (deadline exceeded)", "code":"TimeLimitExceededException", "requestId":"a7e9d2aa-fbb7-486e-8447-2ef2a8544080", "message":"Operation terminated (deadline exceeded)"} 0 X-Neptune-Status: 500 TimeLimitExceededException X-Neptune-Detail: %7B%22detailedMessage%22%3A%22Operation+terminated+%28deadline+exceeded%29%22%2C%22code%22%3A%22TimeLimitExceededException%22%2C%22requestId%22%3A%22a7e9d2aa-fbb7-486e-8447-2ef2a8544080%22%2C%22message%22%3A%22Operation+terminated+%28deadline+exceeded%29%22%7D
Aufschlüsselung der Antwort:

Das vorherige Beispiel zeigt, wie eine OpenCypher Antwort mit abschließenden Headern bei der Diagnose von Abfragefehlern helfen kann. Hier sehen wir vier aufeinander folgende Teile: (1) erste Header mit einem Status von 200 OK, der angibt, dass das Streaming beginnt, (2) teilweise (defekte) JSON-Ergebnisse, die vor dem Ausfall erfolgreich gestreamt wurden, (3) die angehängte Fehlermeldung, die den Timeout anzeigt, und (4) nachfolgende Header, die den endgültigen Status (500) und detaillierte Fehlerinformationen enthalten. TimeLimitExceededException