2016-07-17 8 views
0

Google App Engineの検索APIを使用して、一部のドキュメントをテストインデックスにインデックス登録しようとしています。 Google App Engineの公式ドキュメントに記載されているコードサンプルを使用しています。 しかし、私は以下のスニペットを実行しようとします。私はindex.put経由で文書を置くためにTRとき、私は次のエラーを取得する:APIパッケージ「検索」や「IndexDocumentを呼び出す(:スレッド「メイン」com.google.apphosting.api.ApiProxy $ CallNotFoundExceptionでGoogle App Engine: '検索'または 'IndexDocument()'というAPIパッケージが見つかりませんでした

例外を)' 見つかりませんでした。 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)

私は、Eclipseケプラーとのappengine-javaの-SDK-1.9.18を使用しています

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を使用してコードをプロダクションにプッシュすることができます。誰もこのエラーを見たことがありますか?

+0

スレッドで何かしていますか?これは、このコードがHTTP要求を受信したスレッドで実行されていない場合に発生します。 – emcmanus

+0

@emcmanusいいえ、単なるスレッドでインデックス作成がどのように機能するかをテストするためのサンプルコードを使用しています。インデックス作成の作業に必要な特定の構成が見つかりませんでしたので、上記のコードを実行してみました。 –

答えて

0

したがって、Search APIを呼び出す際には注意が必要なことはほとんどありません。セットアップの最初のエラーは、旧バージョンのGAE SDK(1.9.18)を使用していたことです。

これを修正した後も、ドキュメントのインデックスを作成しようとするとエラーが発生しました。私はappengineコンテキストから呼び出された検索クエリ関数を持っていましたが、私の索引付けは 'main'関数から実行されたので同じエラーが発生しました。 Appengineのコンテキスト内からSearch APIのすべての機能を実行する必要があります。

関連する問題