在基于Android-Studio的项目中为AppEngine创建复合索引

Kno*_*sos 4 google-app-engine objectify google-cloud-endpoints google-cloud-datastore android-studio

我使用Android Studio创建了Android项目及其后端AppEngine端点对应项.我有一个数据存储区,我正在使用Objectify.系统工作得很好,直到我在查询中添加了一个过滤器(仅显示特定的给定电子邮件).

Query<Report> query = ofy().load().type(Report.class).filter("email", user.getEmail()).order("email").order("-when").limit(limit);
Run Code Online (Sandbox Code Playgroud)

这是POJO数据存储区实体:

@Entity
public class Report {
    @Id
    Long id;

    String who;

    @Index
    Date when;

    String what;

    @Index
    String email;
}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试测试时,我从Google API Explorer收到此类错误:

com.google.appengine.api.datastore.DatastoreNeedIndexException: no matching index found.
The suggested index for this query is:
    <datastore-index kind=\"AccessReport\" ancestor=\"false\" source=\"manual\">
    <property name=\"email\" direction=\"asc\"/>
    <property name=\"when\" direction=\"desc\"/>
    </datastore-index>
Run Code Online (Sandbox Code Playgroud)

据我所知,我只需要创建一个复合索引,包括特定字段的电子邮件和时间,以及它们的特定排序方向.

但是,我找到的大多数文档都告诉我编辑datastore-indexes.xml.

App Engine预定义实体的每个属性的简单索引.App Engine应用程序可以在名为datastore-indexes.xml的索引配置文件中定义更多自定义索引,该文件在应用程序的/ war/WEB-INF/appengine生成的目录中生成.

不幸的是,这个文件似乎并不存在于我的项目中.

是否有人熟悉使用Android Studio时改变这种情况的方法?

And*_*gin 6

创建datastore-indexes.xml文件并将其放在/WEB-INF/文件夹中.内容将如下所示:

<datastore-indexes
  autoGenerate="true">

    <datastore-index kind=\"AccessReport\" ancestor=\"false\" source=\"manual\">
        <property name=\"email\" direction=\"asc\"/>
        <property name=\"when\" direction=\"desc\"/>
    </datastore-index>
</datastore-indexes>
Run Code Online (Sandbox Code Playgroud)