GCP Datastore索引使用错误:多属性查询索引顺序问题排查
Datastore 索引顺序问题解决
我使用google.cloud.ndb的Program模型编写了如下查询,目的是筛选出contact_email不为空且claimer_digest_email_frequency属性值在指定列表中的数据:
matching_programs_keys = Program.query( Program.contact_email != None, Program.claimer_digest_email_frequency.IN(possible_values), ).fetch(keys_only=True)
尽管已经为对应属性创建了索引,但始终触发索引错误。排查后发现问题出在index.yaml的属性顺序上:
错误的索引配置:
- kind: Program properties: - name: contact_email - name: claimer_digest_email_frequency
正确的索引配置:
- kind: Program properties: - name: claimer_digest_email_frequency - name: contact_email
Datastore的复合索引属性顺序至关重要,必须匹配查询条件的逻辑顺序,或者直接根据错误提示里要求的索引结构调整对应顺序。
内容的提问来源于stack exchange,提问作者Cannon Wilson
相关产品推荐
相关产品推荐

