管理自动生成的索引

Managing Autogenerated Indexes

我正在进行高级搜索,如 https://cloud.google.com/appengine/articles/indexselection

中详述的那样

我将过滤器的数量从 2 个增加到 4 个,排序顺序为 4 个。如果我为此搜索创建一个完美的索引,我的 index.yaml 中将需要 64 个索引。我遵循了高级搜索文章中的建议,为每个过滤器和排序顺序创建了基本索引,从而产生了 20 个索引。我通过 运行 将我的开发服务器与 dev_appserver.py --require_indexes

连接来测试这些索引是否满足我的搜索

如果我回到我的常规开发工作流程并且 运行 只是 dev_appserver.py,访问我的搜索页面会创建完美的索引。我不想放弃always 运行 --require_indexes 为其他方面的开发生成索引的能力。我也不希望开发服务器创建这些额外的索引。如果服务器会引发 NeedIndexError,是否可以让服务器仅创建新索引?

目前无法通过开发应用服务器获得您的(非常明智和有用!)所需的功能。

我相信 向它添加和支持一个新标志是可行的,类似于但 "softer than" --require_indexes,完全符合您的语义建议——更新 index.yaml "as needed" 仅作为最后的退路,否则将是 NeedIndexError.

但是我不鼓励将其开发为 SDK 的一个分支(考虑到它的开源许可,这将是完全合法的,但是不明智的,因为随着新 SDK 的发布继续进行补丁很快就会变得非常麻烦:-) .

我宁愿——首先也是最重要的——在https://code.google.com/p/googleappengine/issues/list上打开一个功能请求。

接下来,我建议您要么 (A) 保存您精心制作的 index.yaml 并相应地 edit/trim 在部署之前自动生成臃肿的文件,或者 (B) 运行使用 --require_indexes 并根据需要耐心地手动编辑 index.yaml(无论是一旦 NeedIndexError 回溯告诉你,还是在你意识到你已经添加了一些新查询时进行预防。

是的,没有比编辑 SDK 以添加和支持新标志更有趣的了,但是...它可能会更好地满足您应用的需求!