412 не найден соответствующий индекс при выполнении запроса в облачном хранилище данных

Я использую библиотеку gcloud-python для запроса данных из облачного хранилища данных. Считай мой фрагмент таким

from google.appengine.ext import ndb
from datetime import datetime
class Order(ndb.Model):
     order_name = ndb.StringProperty(required=True)
     date_created = ndb.DateTimeProperty(default= datetime.now())

#code for quering the cloud datastore
from gcloud.datastore.query import Query

date_start = datetime.combine(date(year=2015, month=08, day=01), time())
date_end = datetime.combine(date(year=2015, month=08, day=03), time())

query = Query(kind='Order')

query.add_filter('order_name', '=', 'grand-line-order')
query.add_filter('date_created', '<', date_end)
query.add_filter('date_created', '>', date_start)

iterator = query.fetch(limit=10)
records, more, cursor = iterator.next_page()
print records

Для приведенного выше фрагмента я получаю

    File "/Users/sathyanarrayanan/Desktop/app/services/cdr_helper.py", line 528, in fetch_cdr
    records, more, cursor = iterator.next_page()
  File "/Users/sathyanarrayanan/Desktop/app/gcloud/datastore/query.py", line 388, in next_page
    transaction_id=transaction and transaction.id,
  File "/Users/sathyanarrayanan/Desktop/app/gcloud/datastore/connection.py", line 257, in run_query
    datastore_pb.RunQueryResponse)
  File "/Users/sathyanarrayanan/Desktop/app/gcloud/datastore/connection.py", line 108, in _rpc
    data=request_pb.SerializeToString())
  File "/Users/sathyanarrayanan/Desktop/app/gcloud/datastore/connection.py", line 85, in _request
    raise make_exception(headers, content, use_json=False)
PreconditionFailed: 412 no matching index found.

Мой файл Index.yaml такой.

indexes:
- kind: Order
  ancestor: yes
  properties:
  - name: date_created

- kind: Order
  ancestor: yes
  properties:
  - name: date_created
    direction: desc

- kind: Order
  ancestor: yes
  properties:
  - name: order_name
    direction: asc
  - name: date_created
    direction: desc

- kind: Order
  ancestor: yes
  properties:
  - name: order_name
    direction: asc
  - name: date_created
    direction: asc

Я делаю что-то неправильно? Пожалуйста, помогите мне.

2 ответа

Решение

Все ваши индексы используют ancestor: да, поэтому ключ предка должен быть добавлен в ваш запрос. без предка ваша конфигурация индекса требует другого индекса с 'ancestor:no'

- kind: Order
  ancestor: no
  properties:
    - name: order_name
      direction: asc
    - name: date_created
      direction: desc

Примечание: конкретные индексы для каждого запроса

Документы конфигурации индекса указывают, что конфигурация индекса должна быть в файле XML с именем datastore-indexes.xml,

Другие вопросы по тегам