2017-05-04 24 views
1

ゲストブックのGoogleのコード例をチェックアウトしました。それはローカルに構築され、私はそれを私のローカルマシンにデプロイすることができ、うまくいきます。Google App Engineゲストブックの例のインデックスが機能しない

私はGoogle App Engineのにそれを展開しようとすると、このログで起こる:

com.google.appengine.api.datastore.DatastoreNeedIndexException: no matching index found. recommended index is: 
- kind: Greeting 
    ancestor: yes 
    properties: 
    - name: date 
    direction: desc 

The suggested index for this query is: 
    <datastore-index kind="Greeting" ancestor="true" source="manual"> 
     <property name="date" direction="desc"/> 
    </datastore-index> 


    at com.google.appengine.api.datastore.DatastoreApiHelper.translateError(DatastoreApiHelper.java:56) 

私は2つのうちのいずれかを示唆する人を見つけるグーグルでのビットの後。 1)YAMLでいくつかの編集を行います。 2)TARGETを手動で変更し、インデックス設定を追加します。

1)最新のゲストブックコードサンプルにはYAMLがありません。2)ビルドを自動化する方が、展開するたびに手動でハッキングするよりも好きです。

mvn appengineを使用しているときにこの作業を行う方法はありますか?

この

は、私が使用しているガイドです: https://cloud.google.com/appengine/docs/standard/java/tools/using-maven

答えて

0

それは完全に正常です手動で、アプリケーションの特定の用途に応じて、データストアインデックスの設定ファイルを変更するために(時にはが必要)。このようなファイルがサンプルコードから抜けているのは、通常、自動生成されている可能性があるためです。 Cloud Datastore Indexesから:重要

インデックスとクエリの詳細な説明については、記事Index Selection and Advanced Searchを参照してください。

App Engineは、エンティティの各プロパティに簡単なインデックスを事前定義します。 App Engineアプリケーションでは、というindex configuration fileという名前の別のカスタムインデックスを定義できます。このインデックスは、アプリケーションの/war/WEB-INF/appengine-generated ディレクトリに生成された です。開発サーバーは、 既存のインデックスでは実行できないクエリを検出すると、このファイルに という提案を自動的に追加します。アプリケーションをアップロードする前に、 というファイルを編集してインデックスを手動で調整することができます。

また、データストアインデックスの設定は、Javaで記述されていなくても、すべてのアプリケーションのサービス/モジュールで共有されるアプリレベル設定です。このため、datastore-indexes.xml(java-only、メッセージの推奨インデックスフォーマットはこのファイル用)とindex.yaml(すべての言語)への参照が表示されます。

もう1つの重要な点は、インデックス構成をサービス/モジュールコードとは別に展開できます(mavenなどを含む)。 App Engine Maven Plugin Goals and Parametersから:

のAppEngine:deployIndex

は、App Engineにindex.yaml設定ファイルをデプロイします。

このターゲットを使用して、データストアインデックスの設定を更新してください。

関連する問題