【问题标题】:GAE Datastore composite index not workingGAE 数据存储复合索引不起作用
【发布时间】:2018-08-18 10:42:57
【问题描述】:

由于某种原因,我使用 google 数据存储的复合索引之一无法正常工作。

我得到以下查询的零结果:

SELECT * FROM `Foobar` WHERE `ver` = 20180814 AND `level` = 1

但是索引是如何创建的(尽管它是在几天前创建的,但显示为零大小):

我仔细检查了这些字段都是整数,并且我在本地 sdk 上也得到了零结果。

index.yaml:

indexes:

- kind: Foobar
  properties:
  - name: ver
  - name: level
    direction: desc

【问题讨论】:

  • 自创建此索引以来您是否添加过数据?索引属性不会影响在此索引操作之前可能已创建的任何现有实体。
  • @Mangu 这是一个复合索引,而不是实体级别的属性索引。这意味着不需要实体更新即可工作 - 但无论如何我也添加了数据,但不幸的是没有运气。
  • 好的事实证明,复合索引可能需要属性本身也被索引...不确定我是否在任何文档中错过了这一点,但会仔细检查..
  • 来自Index definition and structure: An entity is included in the index only if it has an indexed value set for every property used in the index;

标签: google-app-engine google-cloud-datastore


【解决方案1】:

正如@Dan 所指出的,复合索引仅在实体的属性本身被索引(内置)时才有效,请参阅:https://cloud.google.com/datastore/docs/concepts/indexes#index_definition_and_structure

一个实体只有在它有一个索引值集时才会包含在索引中 对于索引中使用的每个属性

【讨论】:

    猜你喜欢
    • 2019-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-17
    • 2014-08-04
    • 1970-01-01
    • 2015-04-10
    • 1970-01-01
    相关资源
    最近更新 更多