管理自动生成的索引

时间:2015-02-06 19:28:12

标签: python google-app-engine google-cloud-datastore

我正在进行类似https://cloud.google.com/appengine/articles/indexselection

中详述的高级搜索

我将过滤器的数量从2增加到4,有4个排序。如果我在这个搜索上创建一个完美的索引,我的index.yaml中需要64个索引。我按照高级搜索文章中的建议,为每个过滤器和排序顺序创建了基本索引,从而产生了20个索引。我通过使用dev_appserver.py运行我的开发服务器测试了这些索引满足了我的搜索--require_indexes

如果我回到常规开发工作流程并只运行dev_appserver.py,访问我的搜索页面会创建完美的索引。我不想通过始终使用--require_indexes来放弃为其他开发方面生成索引的能力。我也不希望开发服务器创建这些额外的索引。有没有办法让服务器只创建新索引,否则会引发NeedIndexError?

1 个答案:

答案 0 :(得分:2)

目前无法使用dev appserver获取您的(非常明智且有用!)所需的功能。

我相信 可以添加并支持新标志,类似于"比#34;更柔和。 --require_indexes,具有您建议的语义 - 根据需要更新index.yaml"" 只是作为最后一次反击而不是NeedIndexError

然而,我不鼓励将其作为SDK的一个分支(鉴于其开源许可证,这将是完全合法的,但是因为随着新SDK的发布而向前推进补丁将很快变得非常麻烦: - )。 / p>

相反,我会 - 首先 - 在https://code.google.com/p/googleappengine/issues/list上打开一个功能请求。

接下来,我建议您(A)保存您精心手工制作的index.yaml并在部署之前编辑/修剪膨胀的自动生成的一个,或者(B)使用--require_indexes运行并根据需要耐心地手动编辑index.yaml(无论一次NeedIndexError追溯已经告诉过您,还是预先确认您已经添加了一些新查询。

是的,编辑SDK以添加和支持新标志无济于事,但......它可能会更好地满足您应用的需求!