Я смог воспроизвести вашу ошибку самостоятельно, создав набор сущностей с указанными вами свойствами. Чтобы избавиться от ошибки, как вы указали, мне пришлось создать индекс а>. Запросы, которые работают с несколькими свойствами одновременно, не определяются автоматически как индекс, поэтому их необходимо индексировать вручную. Индексы определены в файле index.yaml
, который должен выглядеть примерно так:
indexes:
- kind: Entity
properties:
- name: PID
- name: Path
- name: Value
Конечно, он может содержать больше индексов, если вы используете любой другой. Создав этот index.yaml
файл, вы можете загрузить его в свой проект с помощью следующая команда:
gcloud datastore create-indexes index.yaml
Загрузка займет некоторое время, но как только он будет готов, вы сможете найти его в Хранилище данных › Вкладка «Индексы» в консоли:
Как только появится зеленая галочка, индекс будет готов к работе, и вы сможете использовать GQL для запроса содержимого вашего хранилища данных:
Имейте в виду, что для определения индексов рекомендуется использовать некоторые рекомендации. и самый важный, который вы должны учитывать (чтобы выполнить оптимальный запрос):
Идеальный индекс для запроса, который позволяет выполнять запрос наиболее эффективно, определяется следующими свойствами по порядку:
- Свойства, используемые в фильтрах равенства
- Свойство, используемое в фильтре неравенства
- Свойства, используемые в порядке сортировки
Поэтому убедитесь, что конфигурация вашего индекса похожа на ту, которой я поделился, и что она правильно загружена в ваш проект.
Наконец, существуют некоторые ограничения на проекционные запросы в Хранилище данных, поместите ваш запрос, похоже, не попадает ни в один из них, так что в этом случае это не должно быть проблемой.
person
dsesto
schedule
02.02.2018