Добавить индекс в поле в Cloud Datastore - PullRequest
0 голосов
/ 02 мая 2018

Я хочу добавить индекс для моего поля DateTimeProperty в облачном хранилище данных.

Я создал класс, подобный следующему:

class Activity(BaseModel):
    activity = ndb.StringProperty(required=True)
    last_updated_date = ndb.DateTimeProperty(auto_now=True)

Теперь я хочу выполнить запрос к нему, например:

txt = u'last_updated_date >= {}'.format(last_login_date)
query = search.Query(query_string=txt)
result = search_index.search(query)

Я создал индекс для свойства last_update_date, однако он будет искать только в поле даты, а не в поле времени.

Итак, если я создам какую-либо новую активность сегодня до sysdate, она все равно будет отображаться в запросе ...

1 Ответ

0 голосов
/ 03 мая 2018

Вы пытаетесь использовать GAE Python Search API (который использует ваш фрагмент запроса), чтобы запросить хранилище данных (используя клиентскую библиотеку ndb) - это не сработает - поиск API не использует хранилище данных. Из этой ссылки (выделено мое):

Документы и индексы сохраняются в отдельном постоянном хранилище оптимизирован для поисковых операций. API поиска может индексировать любое число документов. Хранилище данных App Engine может быть более подходящим для приложения, которым нужно получить очень большие наборы результатов .

Для запроса хранилища данных вам нужно использовать NDB Queries и Индексы хранилища данных (отличается от индексов API поиска).

Если вы действительно хотите использовать API поиска, вам нужно создать соответствующие документы API поиска из вашей информации, используя тот же API (вместо хранения информации в хранилище данных).

...