我在ndb datatstore
有一张桌子。我有
updated = ndb.DateTimeProperty(auto_now_add=True, indexed=False)
created = ndb.DateTimeProperty(auto_now_add=True, indexed=False)
通过这种结构,我在表格中有很多记录。现在我正在更新未编入索引的字段indexed=True
。那么,它会索引该表中迄今为止存在的所有updated
和created
数据,还是会在索引后开始索引要填写的数据?
如何索引这些列的未编入索引的行?
答案 0 :(得分:2)
在您启用索引的情况下重写这些属性之前,这些属性不会在现有实体上建立索引。这是因为索引是按实体级别设置的。
为确保您索引所有这些字段,您需要读取每个实体,然后将其写回。对于较小的数据集,您可以通过简单的查询和循环来实现。对于较大的数据集,您需要探索类似Cloud Dataflow的内容。
如果您有大型数据集并且关注成本,则可以进行一些优化。例如,对索引字段执行仅密钥查询,然后如果任何读取实体与该列表匹配,则不要将其写回(因为它已经被索引)。