Python 2 wird von der Community nicht mehr unterstützt. Wir empfehlen die Migration von Python 2-Anwendungen zu Python 3.

Referenz zu index.yaml

App Engine gibt für jede Property einer Entität einen einfachen Index vor. Eine App Engine-Anwendung kann weitere benutzerdefinierte Indexe in der Indexkonfigurationsdatei index.yaml definieren. Der Entwicklungsserver kann die von der Anwendung benötigte Indexkonfiguration generieren, wenn er diese Abfragen beim Testen Ihrer Anwendung durchführt. Sie haben die Möglichkeit, Indexe vor dem Hochladen der Anwendung manuell in der Datei index.yaml zu optimieren. Unter Datenspeicherindexe konfigurieren erhalten Sie weitere Informationen zum Bereitstellen und Verwalten von Indexkonfigurationen.

Beispiel

Im Folgenden finden Sie ein Beispiel für eine Datei vom Typ index.yaml:

indexes:

- kind: Cat
  ancestor: no
  properties:
  - name: name
  - name: age
    direction: desc

- kind: Cat
  properties:
  - name: name
    direction: asc
  - name: whiskers
    direction: desc

# This pound sign is the syntax for a comment.

- kind: Store
  ancestor: yes
  properties:
  - name: business
    direction: asc
  - name: owner
    direction: asc

Syntax

Die Syntax von index.yaml entspricht dem YAML-Format. Die Datei index.yaml enthält ein einzelnes Listenelement mit dem Namen indexes. Jedes Element in der Liste steht für einen Index der Anwendung.

Der Index kann die folgenden Elemente enthalten:

Element Beschreibung
kind Erforderlich. Die Art der Entität für die Abfrage. In der Regel ist dies der Name der Model-Klasse, die das Modell für die Entitäten definiert.
properties

Eine Liste der Properties, die als Spalten des Index in der folgenden Reihenfolge hinzugefügt werden sollen: Properties in Gleichheitsfiltern, Properties in Ungleichheitsfiltern und zum Schluss die Sortierreihenfolge und ihre Richtungen.

Jedes Element in dieser Liste weist folgende Elemente auf:

name
Datenspeichername des Attributs.
direction
Sortierreihenfolge, entweder asc für aufsteigend oder desc für absteigend. Diese muss nur für Attribute angegeben werden, die in Sortierfolgen der Abfrage verwendet werden. Sie muss mit der Richtung in der Abfrage übereinstimmen. Der Standardwert ist asc.
ancestor yes, wenn die Abfrage eine Ancestor-Klausel enthält (entweder Query.ancestor() oder eine GQL-ANCESTOR IS-Klausel). Der Standardwert ist no.

Automatische und manuelle Indexe

Wenn der Entwicklungs-Webserver eine generierte Indexdefinition zur Datei index.yaml hinzufügt, erfolgt dies unterhalb der folgenden Zeile. Wenn diese Zeile noch nicht vorhanden ist, wird sie eingefügt:

# AUTOGENERATED

Der Entwicklungs-Webserver behandelt alle Indexdefinitionen unterhalb dieser Zeile als automatische Einträge. Definitionen unterhalb dieser Zeile werden automatisch aktualisiert, wenn in der Anwendung Abfragen ausgeführt werden.

Alle Indexdefinitionen oberhalb dieser Zeile werden als manuell verwaltet angesehen und nicht vom Entwicklungs-Webserver aktualisiert. Der Webserver nimmt Änderungen nur unterhalb der Zeile vor, und zwar nur dann, wenn in der Datei index.yaml kein Index für eine von der Anwendung ausgeführte Abfrage beschrieben wird. Für eine manuelle Verwaltung verschieben Sie automatische Indexdefinitionen an eine Position vor dieser Zeile.

Indexkonfigurationsdatei bereitstellen

Führen Sie den folgenden Befehl aus, um die Indexkonfigurationsdatei bereitzustellen:

gcloud

gcloud app deploy index.yaml

appcfg

Wenn Sie das ursprüngliche App Engine SDK installiert haben, können Sie Folgendes ausführen:

appcfg.py update_indexes [YOUR_APP_DIR]

Nicht verwendete Indexe löschen

Wenn Sie einen Index in der Indexkonfiguration ändern oder aus ihr entfernen, wird der ursprüngliche Index nicht automatisch aus App Engine gelöscht. Dadurch haben Sie die Möglichkeit, weiterhin eine ältere Version der Anwendung auszuführen, während neue Indexe aufgebaut werden. Außerdem können Sie die ältere Version sofort wiederherstellen, wenn bei einer neueren Version ein Problem festgestellt wird.

Wenn Sie sich sicher sind, dass alte Indexe nicht mehr benötigt werden, können Sie sie so aus App Engine löschen:

gcloud datastore cleanup-indexes index.yaml