C# Google Cloud DataStore 查询过滤器找不到匹配的索引

C# Google Cloud DataStore Query Filter no matching index found

我在使用 Google Cloud DataStore 查询时遇到了一个奇怪的情况。

这是我的代码:

var cutoff = DateTime.UtcNow.AddDays(-30);
var query = new Query("message")
            {
            Filter = Filter.And(
                Filter.Equal("type", type), 
                Filter.Equal("receiver", receiver), 
                Filter.Equal("sender", sender), 
                Filter.GreaterThanOrEqual("created", cutoff))
            };
// type is integer, receiver and sender is string

异常日志显示如下:

Grpc.Core.RpcException: Status(StatusCode=FailedPrecondition, Detail="no matching index found. recommended index is:
- kind: message
  properties:
  - name: receiver
  - name: sender
  - name: type
  - name: created
")

我检查了好几次,所有的属性都确实存在。

下面显示了为什么我称之为奇怪:

当我删除 属性 created 时它工作正常:

var query = new Query("message")
            {
            Filter = Filter.And(
                Filter.Equal("type", type), 
                Filter.Equal("receiver", receiver), 
                Filter.Equal("sender", sender)
            };
 // works fine

那指导我思考属性created是重点。

但是当我只使用 created 时,它工作正常。

var query = new Query("message")
            {
            Filter = Filter.And(
                Filter.GreaterThanOrEqual("created", cutoff))
            };
// works fine too

我不知道发生了什么。

任何帮助将不胜感激。

感谢阅读。

好的,我自己解决了这个问题

该消息确实表明我没有为 DataStore 正确创建索引。

Here is how to create and upload the index file(index.yaml).

在我重置索引后,它工作正常,如我所料。