我目前正在对google数据存储进行一些测试,但我的查询遇到了问题。
如果我相信文档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"
)
根据文档,这应该是很好的。但事实并非如此!我错过了什么?
发布于 2019-03-15 21:34:52
您的查询同时包含一个等于过滤器(在会话中)和一个非等于过滤器(在CreatedOn中),因此您需要一个复合索引来完成查询。因此,您的查询是有效的,但是它需要一个复合索引才能运行查询。
https://stackoverflow.com/questions/55181097
复制相似问题