Indexe mit der REST API konfigurieren

Auf dieser Seite wird beschrieben, wie zusammengesetzte Indexe im Datastore-Modus mithilfe der REST API im Datastore-Modus erstellt, gelöscht und aufgelistet werden.

Die Google Cloud CLI bietet eine bequeme Möglichkeit, auf die REST API im Datastore-Modus zuzugreifen und zusammengesetzte Indexe zu verwalten. Sie können jedoch auch direkt auf die REST API im Datastore-Modus zugreifen, um eigene Tools für die Verwaltung Ihrer zusammengesetzten Indexe zu erstellen. Beispielsweise können Sie Tools zur Automatisierung der Indexbereitstellung und -verwaltung erstellen.

Authentifizierung und Autorisierung

Sie müssen Ihre Anfrage authentifizieren, um unten auf die REST API-Methoden des Firestore-Modus im Datastore-Modus zuzugreifen. Stellen Sie dafür ein Google OAuth 2.0-Zugriffstoken mit einem der folgenden Bereiche bereit:

  • https://www.googleapis.com/auth/datastore
  • https://www.googleapis.com/auth/cloud-platform

Die folgenden cURL- und PowerShell-Beispiele verwenden zur Authentifizierung von Anfragen den Befehl gcloud auth print-access-token. Weitere Informationen zum Abrufen eines Zugriffstokens finden Sie unter Mit OAuth 2.0 auf Google APIs zugreifen.

Autorisierung

Das authentifizierte Nutzer-, Gruppen- oder Dienstkonto in der Anfrage muss für den Zugriff auf die API-Methoden autorisiert sein. Weisen Sie zum Autorisieren des Zugriffs auf die Indexierungsmethoden eine der folgenden Identitäts- und Zugriffsverwaltungsrollen (IAM) zu:

  • Für einen vollständigen Lese- und Bearbeitungszugriff auf den Index müssen Sie eine der folgenden Rollen zuweisen:

    • roles/owner
    • roles/editor
    • roles/datastore.owner
    • roles/datastore.indexAdmin
  • Weisen Sie für den Index-Lesezugriff (Abrufen und Auflisten) eine der folgenden Rollen zu:

    • roles/viewer
    • roles/datastore.user
    • roles/datastore.viewer

Weitere Informationen zum Zuweisen dieser Rollen finden Sie unter Zugriff auf Ressourcen erteilen, ändern und entziehen.

Hinweis

Die folgenden curl- und PowerShell-Beispiele verwenden die Google Cloud CLI (Google Cloud CLI) zur Authentifizierung von Anfragen. Um diese Beispiele lokal auszuführen, Installieren und initialisieren Sie die Google Cloud CLI.

Alternativ können Sie gcloud und curl über die Google Cloud Console mit Cloud Shell aufrufen.

Cloud Shell starten

Zusammengesetzten Index erstellen

Verwenden Sie zum Erstellen eines neuen zusammengesetzten Index die projects.indexes.create-Methode.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • project-id: Ihre Projekt-ID
  • kind: Entitätsart, die indexiert werden soll
  • include-ancestors: Gibt an, ob Entitäts-Ancestors in den Index aufgenommen werden sollen, um Ancestor-Abfragen zu unterstützen, entweder NONE oder ALL_ANCESTORS
  • property-name: Das zu indexierende Attribut; es müssen mindestens zwei Attribute angegeben werden
  • index-direction: Die Sortierreihenfolge für jedes Attribut, entweder ASCENDING oder DESCENDING

HTTP-Methode und URL:

POST https://datastore.googleapis.com/v1/projects/project-id/indexes

JSON-Text der Anfrage:

{
  "kind": "kind",
  "ancestor": "include-ancestors",
  "properties": [
      {
          "name": "property-name",
          "direction": "index-direction"
      },
      {
          "name": "property-name",
          "direction": "index-direction"
      }
  ]
}

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://datastore.googleapis.com/v1/projects/project-id/indexes"

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://datastore.googleapis.com/v1/projects/project-id/indexes" | Select-Object -Expand Content

APIs Explorer

Kopieren Sie den Anfragetext und öffnen Sie die Referenzseite für Methoden. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Fügen Sie den Anfragetext in dieses Tool ein, füllen Sie alle Pflichtfelder aus und klicken Sie auf Ausführen.

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "name": "projects/project-id/operations/S01vcFVpSmdBQ0lDDCoDIDgxZGVhZDM0ZDc4MS1jMjJhLWQ1ZTQtYmMyNS1iYjY2NWVlZCQadGx1YWZlZAcSMXJoLXJleGVkbmktbmltZGERClIS",
  "metadata": {
    "@type": "type.googleapis.com/google.datastore.admin.v1.IndexOperationMetadata",
    "common": {
      "startTime": "2019-12-05T22:27:19.238Z",
      "operationType": "CREATE_INDEX",
      "state": "INITIALIZING"
    },
    "indexId": "CICAgJiUpoMK"
  }
}

Indexstatus abrufen

Im Datastore-Modus erhält jeder Index eine eindeutige Index-ID. Sie können diese Index-ID verwenden, um den Status eines einzelnen Index mithilfe der Methode provices.indexes.get abzurufen:

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • project-id: Ihre Projekt-ID
  • index-id: Eine zusammengesetzte Index-ID

HTTP-Methode und URL:

GET https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id

Senden Sie die Anfrage mithilfe einer der folgenden Optionen:

curl

Führen Sie folgenden Befehl aus:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id"

PowerShell

Führen Sie folgenden Befehl aus:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id" | Select-Object -Expand Content

APIs Explorer

Öffnen Sie das Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "projectId": "project-id",
  "indexId": "index-id",
  "kind": "Task",
  "ancestor": "NONE",
  "properties": [
    {
      "name": "done",
      "direction": "ASCENDING"
    },
    {
      "name": "priority",
      "direction": "ASCENDING"
    }
  ],
  "state": "READY"
}

Indexstatus

Im Indexstatus finden Sie Informationen zum Verlauf und zu den Fehlermeldungen. Sie können einen Index erst dann für Abfragen verwenden, wenn er den Status READY hat. Mögliche Indexstatus:

  • CREATING: Indexerstellung in Bearbeitung.
  • ALREADY_EXISTS: Vorgang kann nicht abgeschlossen werden, da dieser Index bereits vorhanden ist.
  • ERROR: Indexerstellung fehlgeschlagen. Korrigieren Sie die Daten, die den Fehler verursacht haben, löschen Sie diesen Index und erstellen Sie ihn neu.
  • READY: Indexerstellung abgeschlossen. Der Index kann für Abfragen verwendet werden.

Zusammengesetzten Index löschen

HTTP-Methode und URL:

DELETE https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id

Senden Sie die Anfrage mithilfe einer der folgenden Optionen:

curl

Führen Sie folgenden Befehl aus:

curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id"

PowerShell

Führen Sie folgenden Befehl aus:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id" | Select-Object -Expand Content

APIs Explorer

Öffnen Sie das Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die erforderlichen Felder aus und klicken Sie auf Ausführen.

Sie sollten einen erfolgreichen Statuscode (2xx) und eine leere Antwort erhalten.

Alle zusammengesetzten Indexe auflisten

Verwenden Sie zum Auflisten aller zusammengesetzten Indexe für eine Datenbank im Datastore-Modus die Methode projects.indexes.list.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • project-id: Ihre Projekt-ID

HTTP-Methode und URL:

GET https://datastore.googleapis.com/v1/projects/project-id/indexes

Senden Sie die Anfrage mithilfe einer der folgenden Optionen:

curl

Führen Sie folgenden Befehl aus:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://datastore.googleapis.com/v1/projects/project-id/indexes"

PowerShell

Führen Sie folgenden Befehl aus:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://datastore.googleapis.com/v1/projects/project-id/indexes" | Select-Object -Expand Content

APIs Explorer

Öffnen Sie das Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
 "indexes": [
  {
   "projectId": "project-id",
   "indexId": "CICAgOjXh4EK",
   "kind": "Task",
   "ancestor": "NONE",
   "properties": [
    {
     "name": "done",
     "direction": "ASCENDING"
    },
    {
     "name": "priority",
     "direction": "ASCENDING"
    }
   ],
   "state": "READY"
  },
  {
   "projectId": "project-id",
   "indexId": "CICAgNiroIEK",
   "kind": "Task",
   "ancestor": "NONE",
   "properties": [
    {
     "name": "due-date",
     "direction": "DESCENDING"
    },
    {
     "name": "priority",
     "direction": "ASCENDING"
    }
   ],
   "state": "CREATING"
  }
 ]
}