Ошибка Google App Engine: соответствующий индекс не найден. (Джава) - PullRequest
1 голос
/ 23 марта 2011

Я пишу запрос, но он всегда говорит "Соответствующий индекс не найден".Я не знаю почему.Мой код выглядит следующим образом:

Query query = pm.newQuery(Classified.class);
query.setFilter("emp_Id == emp");
query.setOrdering("upload_date desc");
query.declareParameters("String emp");
List<Classified> results = (List<Classified>)query.execute(session.getAttribute("emp_Id").toString()); 

<?xml version="1.0" encoding="utf-8"?>
<datastore-indexes autoGenerate="true">
  <datastore-index kind="Classified" ancestor="false">
    <property name="emp_Id" direction="asc" />
    <property name="category" direction="asc" />
    <property name="upload_date" direction="desc" />
  </datastore-index>
</datastore-indexes> 

Я добавил вышеуказанный индекс, но это не помогло.

Ответы [ 3 ]

6 голосов
/ 23 марта 2011

Полагаю, вам нужно настроить Индекс хранилища данных . Вероятно, в Eclipse для вас уже сгенерирован один файл на WEB-INF/appengine-generated/datastore-indexes-auto.xml, который вам просто нужно скопировать в WEB-INF/datastore-indexes.xml и развернуть снова.

2 голосов
/ 07 марта 2014

Потому что это должно быть где-то в Интернете ...

Я пнул себя, когда узнал об этом. Ошибка в том, что у вас нет индекса, совпадающего с тем, что хотел бы выполнить запрос.Вы можете иметь несколько индексов для каждой сущности.

В Logcat, error, он точно скажет, какой индекс установить и в каком порядке должны быть элементы.

, т. Е. Если ошибкаговорит, что хочет (не будет красиво отформатирован):

<datastore-index kind="Classified" ancestor="false">
    <property name="category" direction="desc" />
    <property name="upload_date" direction="desc" />
  </datastore-index>

, затем Project -> war -> WEB-INF -> appengine-Генерируемый -> datastore-indexes-auto.xml и добавьте именно это.Затем повторно разверните проект.

Затем перейдите в консоль Google Cloud Console и посмотрите на Datastore -> indexes.Следует сказать, что индекс готовится (это происходит быстрее, если вы можете убить все подключенные приложения и закрыть экземпляр в консоли).

После того, как это переместится в список других индексов, перезапуститеприложение, и оно больше не будет ошибкой в ​​отношении индекса.

Иди и получи, господа / дамы

1 голос
/ 23 марта 2011

Указанный вами индекс должен содержать все возможные результаты в том порядке, в котором они будут возвращены. Ваш запрос запрашивает определенный emp_Id, упорядоченный по upload_date, но ваш индекс упорядочен в основном по категориям.

Попробуйте удалить строку категории из определения индекса, или поменять местами порядок category и upload_date, , чтобы сделать upload_date основным порядком сортировки для индекса. Если другая часть вашего кода опирается на строку категории, вам, возможно, придется создать два отдельных индекса (что потребует некоторых вычислительных затрат).

Изменить: см. Комментарий ниже Ник Джонсон ре. дополнительные параметры.

...