квоты на appengine поиск API для Java
Я тестирую новый поисковый API для движка приложений для Java, и у меня есть следующий код, который пытается добавить ~ 3000 документов в индекс:
<code>List<Document> documents = new ArrayList<Document>(); for (FacebookAlbum album: user.listAllAlbums()) { Document doc = Document.newBuilder() .setId(album.getId()) .addField(Field.newBuilder().setName("name").setText(album.getFullName())) .addField(Field.newBuilder().setName("albumId").setText(album.getAlbumId())) .addField(Field.newBuilder().setName("createdTime").setDate(Field.date(album.getCreatedTime()))) .addField(Field.newBuilder().setName("updatedTime").setDate(Field.date(album.getUpdatedTime()))) .build(); documents.add(doc); } try { // Add all the documents. getIndex(facebookId).add(documents); } catch (AddException e) { if (StatusCode.TRANSIENT_ERROR.equals(e.getOperationResult().getCode())) { // retry adding document } } </code>
Однако я получаю следующее исключение:
<code>Uncaught exception from servlet java.lang.IllegalArgumentException: number of documents, 3433, exceeds maximum 200 at com.google.appengine.api.search.IndexImpl.addAsync(IndexImpl.java:196) at com.google.appengine.api.search.IndexImpl.add(IndexImpl.java:380) at photomemories.buildIndexServlet.doGet(buildIndexServlet.java:47) </code>
Есть ли квота на количество документов, которые я могу вставить с добавленным вызовом, установленным на 200?
Если я попытаюсь вставить один документ за раз в индекс с помощью следующего кода:
<code> for (FacebookAlbum album: user.listAllAlbums()) { Document doc = Document.newBuilder() .setId(album.getId()) .addField(Field.newBuilder().setName("name").setText(album.getFullName())) .addField(Field.newBuilder().setName("albumId").setText(album.getAlbumId())) .addField(Field.newBuilder().setName("createdTime").setDate(Field.date(album.getCreatedTime()))) .addField(Field.newBuilder().setName("updatedTime").setDate(Field.date(album.getUpdatedTime()))) .build(); try { // Add the document. getIndex(facebookId).add(doc); } catch (AddException e) { if (StatusCode.TRANSIENT_ERROR.equals(e.getOperationResult().getCode())) { // retry adding document } } } </code>
Я получаю следующее исключение:
<code>com.google.apphosting.api.ApiProxy$OverQuotaException: The API call search.IndexDocument() required more quota than is available. at com.google.apphosting.runtime.ApiProxyImpl$AsyncApiFuture.success(ApiProxyImpl.java:479) at com.google.apphosting.runtime.ApiProxyImpl$AsyncApiFuture.success(ApiProxyImpl.java:382) at com.google.net.rpc3.client.RpcStub$RpcCallbackDispatcher$1.runInContext(RpcStub.java:786) at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:455) </code>
Я думал, что квота на вызовы API составляет 20 КБ / день (см. Здесь:https://developers.google.com/appengine/docs/java/search/overview#Quotas).
Есть идеи о том, что происходит?