У меня есть объекты в приложении двигатель, который я запрашиваю как:Missing индекс конкретных лиц в приложении двигателя
foo = Foo.all().filter('bar =', baz).get()
#baz is unicode, bar is a StringProperty
#Foo inherits from db.Model
Это работает для большинства организаций, но при некотором значении Baz, ни один субъект не возвращается, даже несмотря на то, сущность, безусловно, существует, как можно проверить на https://console.cloud.google.com/datastore/entities/. Причина в том, что для этот конкретный объект нет индекса на его значение bar
, о чем свидетельствует отсутствие галочки в столбце «Индексированный» на этой веб-странице.
docs состояния,
Индексов простых запросов, такие как запросы более одного свойства, которые создаются автоматически
Так что я ожидал бы, что всех объектов этого типа будет имеют индекс этого свойства, но, очевидно, это неверно. Вопросы:
Q1: при создании индекса добавляются ли сущности, которые были помещены до того, как первый запрос выполняется с использованием этого индекса? (или это индекс, созданный при первом размещении какого-либо объекта такого типа?)
Q2: если нет, то какие изменения в сущности (если таковые имеются) приведут к тому, что индекс будет добавлен к этому свойству? (я пытался изменить свойство, отличное от bar, и помещать, и это не вызывало добавление объекта)
Q3: явно листинг индекса в index.yaml
изменить это поведение?
Q4: существует ли способ программно определить, имеет ли объект индекс для определенного свойства?
Q5: (бонус) есть ли документация Google по вышеуказанному?
благодаря
Для данного объекта, это 9 символов, utf-8. Я думаю, что это 18 байт. – tom