Google App Engineの検索APIを使用して、一部のドキュメントをテストインデックスにインデックス登録しようとしています。 Google App Engineの公式ドキュメントに記載されているコードサンプルを使用しています。 しかし、私は以下のスニペットを実行しようとします。私はindex.put
経由で文書を置くためにTRとき、私は次のエラーを取得する:APIパッケージ「検索」や「IndexDocumentを呼び出す(:スレッド「メイン」com.google.apphosting.api.ApiProxy $ CallNotFoundExceptionでGoogle App Engine: '検索'または 'IndexDocument()'というAPIパッケージが見つかりませんでした
私は、Eclipseケプラーとのappengine-javaの-SDK-1.9.18を使用しています例外を)' 見つかりませんでした。 at com.google.apphosting.api.ApiProxy $ 1.get(ApiProxy.java:179) (com.google.apphosting.api.ApiProxy $ 1.get(ApiProxy.java:177) 、com.google.appengine) apui.utils.FutureWrapper.get(FutureWrapper.java:88) (com.google.appengine.api.util.FutureWrapper.get(FutureWrapper.java:88) 、com.google.appengine.api.search.FutureHelper)。 getInternal(FutureHelper.java:73) (com.google.appengine.api.search.FutureHelper.quietGet(FutureHelper.java:32) (com.google.appengine.api.search.IndexImpl.put(IndexImpl.java: 486) at test.service.SearchingService.indexADocument(SearchingService.java:52)
IndexSpec indexSpec = IndexSpec.newBuilder().setName(indexName).build();
SearchService service = SearchServiceFactory.getSearchService(
SearchServiceConfig.newBuilder().setDeadline(10.0).setNamespace("geeky").build());
Index index = service.getIndex(indexSpec);
final int maxRetry = 3;
int attempts = 0;
int delay = 2;
while (true) {
try {
index.put(document); // ERROR!!!!!!!!!!
} catch (PutException e) {
if (StatusCode.TRANSIENT_ERROR.equals(e.getOperationResult().getCode())
&& ++attempts < maxRetry) { // retrying
Thread.sleep(delay * 1000);
delay *= 2; // easy exponential backoff
continue;
} else {
throw e; // otherwise throw
}
}
break;
}
}
:
はここにコードスニペットです。ローカルの開発サーバーやappspotでホストされているプロダクションでコードを実行するかどうかは関係ありません。私は同じエラーを取得します。 私はすでにGoogleのアカウントにeclipseで認証されており、Eclipseを使用してコードをプロダクションにプッシュすることができます。誰もこのエラーを見たことがありますか?
スレッドで何かしていますか?これは、このコードがHTTP要求を受信したスレッドで実行されていない場合に発生します。 – emcmanus
@emcmanusいいえ、単なるスレッドでインデックス作成がどのように機能するかをテストするためのサンプルコードを使用しています。インデックス作成の作業に必要な特定の構成が見つかりませんでしたので、上記のコードを実行してみました。 –