Я развернул небольшой бэкэнд с некоторыми методами.Один из них делает простой запрос для получения списка объектов.Это метод:
@ApiMethod(path = "getMessagesByCity", name = "getMessagesByCity", httpMethod = ApiMethod.HttpMethod.POST)
public MessageResponse getMessagesByCity(@Named("City_id") Long city) {
MessageResponse response = new MessageResponse();
List<Message> message = ofy().load().type(Message.class).filter("city", city).list();
response.response = 200;
return response;
}
И это класс Message:
@Entity
public class Message {
@Id
private Long id;
private String name;
@Index
private Long city;
...
}
Я прочитал много постов, и все они упоминают, что, вероятно, это вызвано тем, что хранилище данных-indexes.xml не обновляется автоматически.Однако Google doc сообщает, что это (https://cloud.google.com/appengine/docs/standard/python/config/indexconfig):
Каждому запросу Cloud Datastore, сделанному приложением, требуется соответствующий индекс. Индексы для простых запросов, таких как запросы к одному свойству, создаются автоматически.
Итак, после этого я думаю, что связанные с индексом файлы мне не нужны.
Если я выполню метод "getMessagesByCity" с простым запросом:
List<Message> message = ofy().load().type(Message.class).filter("city", city).list();
Сервер возвращает мне ошибку 503 с этим сообщением журнала:
"com.google.appengine.api.datastore.DatastoreNeedIndexException: не найдено соответствующего индекса. Индекс отсутствует, но мы не можемчтобы сообщить вам, какой из-за ошибки в SDK App Engine. Если ваш запрос содержит только фильтры равенства, вам, скорее всего, нужен составной индекс для всех свойств, на которые ссылаются эти фильтры. "
Любая идея? Как я могу это решить?