是否可以使用Google Developer Console在我的项目的Google Cloud Datastore上查看和创建索引?
如果没有,我如何通过另一条路线创建一个?
一些上下文:我正在编写一个简单的Android应用程序,通过自定义“Mobile Backend Starter / MBS”来存储/检索云数据存储中的数据(在开发控制台中创建新项目时,我们总是被邀请部署后端)。
我现在正处于我在Android客户端中指定的查询/过滤器返回“503”错误,指出需要索引。我想这是因为我在查询中使用了“大于”的过滤器。
那么如何添加一个呢?或者我是否必须编辑后端部署包才能执行此操作?如果是这样,那我怎么能这样做,例如查看MBS后端部署到的文件夹?我假设MBS是一个零配置后端 - 我们只需要编写客户端,但似乎基本的查询操作需要添加一个索引,所以情况并非如此?我被建议在我正在向CloudBackend调用的list()调用抛出的IOException中的某处添加一个xml片段:
com.google.api.client.googleapis.json.GoogleJsonResponseException: 503 Service Unavailable
{
"code": 503,
"errors": [
{
"domain": "global",
"message": "com.google.appengine.api.datastore.DatastoreNeedIndexException: no matching index found.\nThe suggested index for this query is:\n <datastore-index kind=\"DB\" ancestor=\"false\" source=\"manual\">\n <property name=\"_createdBy\" direction=\"asc\"/>\n <property name=\"originatingDeviceID\" direction=\"asc\"/>\n <property name=\"LastUpdatedOn\" direction=\"asc\"/>\n </datastore-index>\n\n",
"reason": "backendError"
}
... SNIP
答案 0 :(得分:1)
通常,在测试应用程序时会自动生成大多数索引。如果没有发生,您需要手动配置datastore-indexes.xml文件。您可以在Java Datastore Index Configuration了解更多相关信息。
答案 1 :(得分:0)
感谢所有人的意见 - 为了将来的参考,这里的解决方案对于像我这样的用户来说只是部署MBS而且还没有想要与服务器端代码进行交互,而这些代码应该只是部署并开始。
首先,您通过Google App Engine SDK工具下载当前部署的后端:
appcfg.cmd --application=my-project-name download_app .
然后在WEB-INF / datastore-indexes.xml中,我们看到在vanilla MBS配置中已禁用索引的自动生成。
<?xml version="1.0" encoding="utf-8"?>
<datastore-indexes autoGenerate="false">
<datastore-index kind="_CloudMessages" ancestor="false">
<property name="topicId" direction="asc"/>
<property name="_createdAt" direction="desc"/>
</datastore-index>
</datastore-indexes>
这就是我的索引没有建成的原因。然后粘贴建议的索引,幸运的是,它包含在Java IOException消息体中,并通过以下方式将其上传回Google:
appcfg.cmd --application=my-project-name update_indexes .
对于Google控制台而言,拥有一些控制台功能来管理索引非常有用,因为它必须添加/删除/编辑实体,但似乎您只能检查它们。