我有一个具有以下综合索引的数据存储(数据存储模式下的Firestore)数据库/实体:
- kind: spider-results
properties:
- name: created
direction: desc
- name: meta
- name: score
这已在两天前应用,但是我的索引不包含任何实体。
实体比索引中包含的三个实体具有更多的属性。在使用google-cloud-datastore
版本1.7.1的Python中,我试图获取实体。为了使查询尽可能快并仅返回索引中包含的字段,我设置了projection
参数:
client = datastore.Client.from_service_account_json(credentials_path)
query = client.query(kind='spider-results', order=['-created'],
projection=['created', 'meta', 'score'])
for entity in query.fetch(eventual=True):
print(entity.key.name)
但是,这不会产生任何结果。我的理解是,这是由于匹配索引为空引起的。
当我删除projection
参数时,查询产生结果(包含一些相对较大的字段,这些字段会导致大量数据传输,从而减慢了整个查询的速度。