种类名称: 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'
答案 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]中,您将找到有关索引的更广泛的解释。
干杯。