如何在Google数据存储中添加组合索引?

问题描述:

我现在使用Google Datastore作为我公司的数据库。 今天,我做了一个索引,并成功在'索引'中列出。 但我做的索引的大小和实体是空的。如何在Google数据存储中添加组合索引?

谷歌数据存储的文件说,该索引是自动genarated,但它不是。

是否有任何命令或要做的事情来产生索引?

下图是截图。

上面一个是新的。下面的一个已经被使用了。

enter image description here

+1

你好,欢迎来到StackOverflow,我编辑了一下你的问题,直接将图像带入问题并清除一些拼写。如果您觉得我不公平地改变了帖子的含义,请回复此评论,并通过@ Magisch

+0

@Magisch与我联系谢谢您的好意。你所做的是我想要的。 :) –

事实上现有实体的问题将不会被自动索引。您必须加载并保存所有旧实体(无索引),以便为这些实体创建必要的索引。

但是请注意,从没有索引的改变属性索引并 不影响可能在 改变之前已创建的任何现有的实体。对该属性的查询过滤不会返回此类现有实体,因为实体在创建时未写入查询的 索引。为使将来的查询可访问实体,您必须将它们重写到数据存储,以便它们将被输入到相应的索引中。也就是说,您必须为每个此类现有实体执行以下 :

从数据存储中检索(获取)该实体。将实体 写回(放)回数据存储区。同样,将索引中的属性更改为 仅影响随后写入数据存储的实体。 具有该属性的任何现有实体的索引条目 将继续存在,直到更新或删除实体。为避免不必要的结果,您必须清除所有查询的代码,这些查询会过滤 或按(现在未索引的)属性进行排序。 (source

请注意,文档没有明确指出组合索引相同。在部署新的组合索引时,索引将在开发人员控制台中显示为“构建”,直至达到“正在服务”状态。不知道它在那里建立了什么,我通常会重新保存所有的实体和所有工作,因为它应该。

自动生成是一个关键字,告诉您是否已手动创建此索引,或者是否在您作出需要此索引的查询时由开发人员服务器创建该索引。这与决定如何以及何时为实体创建索引没有任何关系。

<datastore-indexes>元件具有自动生成属性,它 控制是否该文件应与 自动生成的索引配置一起被考虑。请参阅使用自动索引 下面的配置。(source

当您创建了一个新的索引,而需要该指数所有现有的实体,我建议你创建一个游标查询来处理这个问题。通常我在管理后台公开这个查询,并且运行查询直到没有结果。为什么揭露这件事?如果你有很多实体,这个工作的运行时间可能会比前端允许的60秒或后端的10分钟长。通过公开这一点,我可以使用前端实例时间,而不必担心时间限制。