数据存储:失败前提条件:400 该查询需要 ASC 或 DESC 索引来表示类型转录和属性状态

问题描述 投票:0回答:1

根据https://cloud.google.com/python/docs/reference/datastore/latest/queries#class-googleclouddatastorequerypropertyfilterpropertyname-operator-value 我应该能够运行以下查询

q = client.query(kind='transcription')
result = list(q.add_filter(filter=query.PropertyFilter("status", "=", "IN_PROCESS")).fetch())
print(result)

但是,当我跑步时,我得到了

google.api_core.exceptions.FailedPrecondition: 400 The query requires an ASC or DESC index for kind transcription and property status. Please use the gcloud CLI to remove the single-property index exemption for this property.

当我检查文档时,我发现我应该先创建一个索引,使用1个字段过滤器来执行查询我的索引看起来像这样

indexes:

- kind: transcription
  properties:
  - name: status

当我跑步时

gcloud datastore indexes create index.yaml
我得到了

ERROR: (gcloud.datastore.indexes.create) INVALID_ARGUMENT: This index:
Datastore index on 'transcription' for (status ASC)
is not necessary, since single-property indexes are built in. Please remove it from your index file and upgrade to the latest version of the SDK, if you haven't already.

看起来对于使用 1 个字段过滤器的查询,不需要索引。但为什么我仍然收到错误。

google-cloud-datastore
1个回答
0
投票

您的数据库模式错误。 您可以使用 gcloud 命令查看模式 (https://cloud.google.com/sdk/gcloud/reference/firestore/databases/describe)。要使用数据存储区 API,您需要处于数据存储区模式的 Firestore 中。

© www.soinside.com 2019 - 2024. All rights reserved.