如何在数据存储中创建复合索引来过滤实体中的多个属性



我们使用Google Datastore作为我们的仪表板。在仪表板中,我们为最终用户提供了过滤选项。

假设我们有一个数据存储类型,它的结构是:
{
'attribute1': 'val1',
'attribute2': 'val2',
'attribute3': 'val3',
'timestamp': 123456789,
}

有一个用例,我们需要过滤特定时间段内的数据,并结合不同的其他属性。

在数据存储中创建复合索引以实现此功能的最佳方法是什么?任何想法吗?

Cloud Datastore提供两种类型的索引

内置索引-

这些是Cloud Datastore自动为每个实体类型的每个属性创建的索引。这些内置索引是单属性索引,适用于简单查询。

综合指数-

复合索引是手工索引,由用户创建,而不是由Cloud Datastore自动创建。这些是多属性索引。复合索引需要用于复杂的查询,这些查询涉及使用两个或多个属性过滤数据。要构建复合索引,需要配置索引。Yaml文件,然后通过运行以下命令创建它—

gcloud datastore indexes create ~/path/to/index.yaml/file

现在来看你的用例-

如果要基于两个以上的属性筛选数据,则不能使用内置索引。所以你必须使用复合索引或手动索引。为此,您需要定义一个索引配置文件,并如上所述进行部署。您希望根据特定时间段结合一个或多个属性来筛选数据。因此,对于用例,下面的索引配置文件应该可以很好地工作。

index.yaml

indexes:
- kind: demo
properties:
- name: attribute1
direction: asc
- name: attribute2
direction: asc
- name: attribute3
direction: asc
- name: timestamp
direction: asc

在上面的配置文件中,direction属性是可选的,如果你不指定它,它将默认为升序(asc)。对于降序排序,可以将其指定为desc。这将通过组合配置文件中提到的两个或多个属性来过滤数据。你可以通过这个页面了解更多关于云数据存储的索引。

请注意,基于索引的查询机制支持广泛的查询,适用于大多数应用程序。数据存储查询仍然存在一些限制或限制。我建议你通过这个页面来了解更多关于云数据存储查询的限制。

最新更新