2017-07-27 1 views
0

Ich bin neu bei Google Datastore und dieser Google-Dokumentation folgend.Die Projektionsabfrage kann nicht auf Google Datenspeicher angewendet werden. Fehler: Kein passender Index gefunden

https://cloud.google.com/datastore/docs/datastore-api-tutorial

Ich habe durch das Lesen dieses Dokument für den Aufruf von Google APIs Genehmigung erfolgen.

https://developers.google.com/identity/protocols/application-default-credentials#callingpython

Ich habe nur zwei Dateien:

1. client_secret.json 
2. datastoreConnection.py 

und das ist mein datastoreConnection.py bis jetzt:

import os 
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = '/path/to/client_secret.json' 

from oauth2client.client import GoogleCredentials 
credentials = GoogleCredentials.get_application_default() 
from google.cloud import datastore 

client = datastore.Client(project ="xyz",namespace = "staging") 

def list_tasks(client): 
    query = client.query(kind='testData') 
    query.projection = ['patientName'] 
    return list(query.fetch(limit=10)) 

print(list_tasks(client)) 

Dieser Code funktioniert gut und die Rückkehr mir die erforderlichen Daten .

Problem tritt auf, wenn ich Projektion mit mehreren Eigenschaften anwende. beispiels

query.projection = ['patientName','age'] 

Code gibt mir den Fehler:

google.cloud.exceptions.PreconditionFailed: 412 no matching index found. recommended index is:<br/>- kind: testData<br/> properties:<br/> - name: age<br/> - name: patientName<br/> 

Zur Projektion Abfrage machen ich das las. https://cloud.google.com/datastore/docs/concepts/queries#datastore-projection-query-python

Ich habe die Eigenschaftsnamen überprüft, aber immer noch den gleichen Fehler. Wie kann ich das lösen?

Ich habe index.yaml Datei in anderen Fragen im Zusammenhang mit dieser Art von Problem gesehen. Ist das notwendig zu nutzen und was nützt es?

Antwort

1

Jedes Mal, wenn Sie mehr als eine Eigenschaft abrufen müssen, aber nicht alle Eigenschaften (*), benötigen Sie einen übereinstimmenden zusammengesetzten Index. In diesem Fall benötigen Sie einen zusammengesetzten Index für die Eigenschaften Patientenname und Alter. Sie können einen zusammengesetzten Index mit der Datei index.yaml oder dem Befehlszeilentool gcloud erstellen. Die folgende Dokumentation sollte Ihnen helfen:

https://cloud.google.com/datastore/docs/concepts/indexes.

Verwandte Themen