Python 无法通过google数据存储应用投影查询。错误:找不到匹配的索引

Python 无法通过google数据存储应用投影查询。错误:找不到匹配的索引,python,google-cloud-datastore,Python,Google Cloud Datastore,我是谷歌数据存储的新手,并遵循这个谷歌文档 我已经通过阅读此文档完成了调用Google API的授权 我只有两个文件: 1. client_secret.json 2. datastoreConnection.py 这是迄今为止我的datastoreConnection.py: import os os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = '/path/to/client_secret.json' from oauth2client.c

我是谷歌数据存储的新手,并遵循这个谷歌文档

我已经通过阅读此文档完成了调用Google API的授权

我只有两个文件:

1. client_secret.json
2. datastoreConnection.py
这是迄今为止我的datastoreConnection.py:

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))
此代码工作正常,并返回我所需的数据

应用具有多个属性的投影时出现问题。 e、 g

代码给了我一个错误:

google.cloud.exceptions.PreconditionFailed: 412 no matching index found. recommended index is:<br/>- kind: testData<br/>  properties:<br/>  - name: age<br/>  - name: patientName<br/>
google.cloud.exceptions.premissions失败:412未找到匹配索引。建议索引为:
种类:testData
属性:
名称:年龄
名称:患者姓名
为了进行投影查询,我读了这篇文章。

我已经交叉检查了属性名称,但仍然有相同的错误。 我怎样才能解决这个问题


我在与此类问题相关的其他问题中看到了index.yaml文件。这是否有必要使用?它的好处是什么?

任何时候,您需要检索多个属性,但不是所有属性(*),您需要有一个匹配的复合索引。在这种情况下,您需要患者姓名和年龄属性的复合索引。可以使用index.yaml文件或gcloud命令行工具创建复合索引。以下文档应能帮助您:


这在过去可能是正确的,但现在您可以检索属性的子集,而无需先预定义这些属性的复合索引。文档中仍然指出,投影查询需要索引。如果使用Emulator,将自动创建这些索引。
google.cloud.exceptions.PreconditionFailed: 412 no matching index found. recommended index is:<br/>- kind: testData<br/>  properties:<br/>  - name: age<br/>  - name: patientName<br/>