【发布时间】:2019-08-06 10:40:03
【问题描述】:
我目前正在对谷歌数据存储进行一些测试,但我的查询有问题。
如果我相信 https://cloud.google.com/datastore/docs/concepts/queries 文档,我们可以使用 EQUALS 指令实现多列上的过滤器。
但在测试时,我从 API 收到错误消息。 在 Datastore 的 github 上搜索时,我发现了这个参考:https://github.com/GoogleCloudPlatform/google-cloud-dotnet/issues/304,这与我的问题相对应,除了对于我的情况,查询看起来不错。
这是发送的请求:
{
{
"kind": [{
"name": "talk.message"
}],
"filter": {
"compositeFilter": {
"op": "AND",
"filters": [{
"propertyFilter": {
"property": {
"name": "Conversation"
},
"op": "EQUAL",
"value": {
"stringValue": "2f16c14f6939464ea687d316438ad4cb"
}
}
},
{
"propertyFilter": {
"property": {
"name": "CreatedOn"
},
"op": "LESS_THAN_OR_EQUAL",
"value": {
"timestampValue": "2019-03-15T10:43:31.474166300Z"
}
}
},
{
"propertyFilter": {
"property": {
"name": "CreatedOn"
},
"op": "GREATER_THAN_OR_EQUAL",
"value": {
"timestampValue": "2019-03-14T10:43:31.474175100Z"
}
}
}
]
}
}
}
}
这是来自 API 的答案:
{Grpc.Core.RpcException: Status(
StatusCode=FailedPrecondition,
Detail="no matching index found. recommended index is:
- kind: talk.message
properties:
- name: Conversation
- name: CreatedOn"
)
根据文档,这应该很好……但事实并非如此! 我错过了什么?
【问题讨论】: