Вот запрос в GQL, который не работает на изменено> отметка времени
$query = $ds->query()
->kind('Video')
->filter('email', '=', $email)
->filter('lat', '=', $lat)
->filter('lng', '=', $lng)
->filter('modified', '>', 1505807001);
$result = $ds->runQuery($query);
Запрос работает нормально, если пропущена отметка времени больше, чем. В противном случае не работает.
Возвращает исключение. Выдержка:
{
"error": {
"code": 400,
"message": "no matching index found. recommended index is:\n- kind:
Video\n propert (truncated...)
Любая помощь с этим будет высоко ценится.
Вам нужно добавить явный составной индекс (https://cloud.google.com/datastore/docs/concepts/indexes) по вашему запросу.
Без неравенства Cloud Datastore может использовать встроенные индексы для выполнения вашего запроса, но с неравенством временных меток Cloud Datastore не сможет выполнить ваш запрос.
Возможно, вам понадобится определение индекса, например:
indexes:
- kind: Video
properties:
- name: email
direction: desc
- name: lat
direction: desc
- name: lng
direction: desc
- name: modified
direction: asc
Как навскидку, если лат & lg — это географические точки, вы, вероятно, захотите использовать что-то вроде геохаширования (http://hitching.net/2009/11/10/scalable-fast-accurate-geo-apps-using-google-app-engine-geohash-faultline-correction/)
Других решений пока нет …