如何使用GQL(Google查询语言)从Google Cloud Platform获取索引/列数据

时间:2018-09-04 10:44:42

标签: google-cloud-platform google-cloud-datastore

种类名称: invoice_header

Name/ID                       :id=4829628648652800
amount                        :2900
booking_ids                   :1,2
created_at                    :2018-09-04 10:20:30
discount_amount               :23
due_amount                    :9999
indicator                     :PO
invoice_date                  :2018-09-04
invoice_id                    :451
issued_to                     :P
location_id                   :12
net_payable_amount            :999
order_or_po_id                :533
paid_amount                   :555
partner_id                    :400
payment_mode_promotion_amount :0
status                        :NP
tax_amount                    :34
updated_at                    : 

我尝试使用上述类型的以下GQL查询来获取数据,但出现以下错误。

  

GQL查询错误:您的数据存储区没有复合索引   (开发人员提供)此查询所需。

select invoice_date from invoice_header where location_id ='12' and invoice_date >= '2018-09-01' and invoice_date <= '2018-09-05'

1 个答案:

答案 0 :(得分:0)

您是否已将索引文件添加到应用程序?

如文档[1]所述,应用程序进行的每个Cloud Datastore查询都需要一个相应的索引。自动创建简单查询的索引,例如单个属性的查询。复杂查询的索引必须在名为index.yaml的配置文件中定义。该文件与应用程序一起上传,以在Cloud Datastore中创建索引。

复合索引支持复杂查询,并在索引配置文件(index.yaml)中定义。

在您的情况下,您需要添加一个包含location_id和invoice_date属性的复合索引。这是index.yaml的示例:

索引: -种类:invoice_header   特性:   -名称:location_id     方向:升序   -名称:invoice_date     方向:升序

完成索引配置文件的修改后,运行“ gcloud datastore create-indexes”命令将索引投入使用。

[2]中,您将找到有关索引的更广泛的解释。

干杯。