如何在Firestore子文档上创建索引豁免?

时间:2019-02-27 16:03:40

标签: google-cloud-firestore

我们的数据库结构如下:

  • 集合foo
    • 文件
      • 集合bar
        • 文档包含很多字段(限制为1 MB)

尝试将文档写入包含34571个字段的bar集合中,我得到了(从Go API中获得):

  

rpc错误:代码= InvalidArgument desc =实体的内置索引条目过多

好吧,it seems我需要添加一个豁免:

  

大数组或映射字段

     

每个文档的大数组或映射字段可以达到20,000个索引条目的限制。如果您不是基于大型数组或地图字段进行查询,则应将其从索引中排除。

但是如何?控制台仅允许我设置单个集合名称和单个字段路径,并且不接受斜杠:

"Add exemption" dialog

我尝试了其他组合,但是/Collection ID均不接受Field path,并且在没有明确禁止的情况下使用.会导致尝试保存豁免时的通用错误。我也不确定是否允许使用*

1 个答案:

答案 0 :(得分:0)

索引豁免基于集合ID,而不是集合路径。在这种情况下,您可以输入bar作为集合ID。这也意味着该豁免适用于ID为bar的所有集合,无论层次结构如何。

对于字段,每个豁免只能指定一个字段路径。不支持“ *”全选器。有limit of 200 index exemptions,因此您将无法豁免所有34571字段。如果可能,我建议将您的字段移动到地图中。然后,您可以在地图字段上禁用索引编制。