[英]Google App Engine Guestbook example index not working
我已經簽出了Guestbook的Google代碼示例。 它在本地構建,我可以將其部署到我的本地計算機上並且工作正常。
當我嘗試將其部署到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)
經過一番谷歌搜索之后,我發現有人提出以下兩種建議之一。 1)在YAML中進行一些編輯。 2)手動修改TARGET並添加一些索引配置。
我想避免兩者都發生,因為1)在最新的Guestbook代碼示例中沒有YAML,並且2)我更喜歡自動構建,而不是每次想要部署時都手動對其進行破解。
使用mvn appengine:deploy時,有什么方法可以使它工作?
這是我一直在使用的指南: https : //cloud.google.com/appengine/docs/standard/java/tools/using-maven
根據應用程序的特定用途手動修改數據存儲區索引配置文件是完全正常的(有時甚至是必需的 )。 樣本代碼中可能缺少此類文件的原因可能是它通常是自動生成的。 來自Cloud Datastore索引 :
重要提示:有關索引和查詢的深入討論,請參閱文章索引選擇和高級搜索 。
App Engine會為實體的每個屬性預先定義一個簡單的索引。 App Engine應用程序可以在名為
datastore-indexes.xml
的索引配置文件中定義其他自定義索引,該文件在應用程序的/war/WEB-INF/appengine-generated
目錄中/war/WEB-INF/appengine-generated
。 當開發服務器遇到無法使用現有索引執行的查詢時,它會自動向該文件添加建議。 您可以在上傳應用程序之前通過編輯文件來手動調整索引。
您還應該注意,數據存儲區索引配置是應用程序級配置,即使不是用Java編寫,也可以由所有應用程序的服務/模塊共享。 這就是為什么您可能同時看到對datastore-indexes.xml
(僅Java,消息中建議的索引格式針對此文件)和index.yaml
(所有語言)的index.yaml
。
另一個重要說明是,索引配置可以獨立於服務/模塊代碼進行部署,包括使用maven。 通過App Engine Maven插件的目標和參數 :
AppEngine上:deployIndex
將index.yaml配置文件部署到App Engine。
因此,只需使用此目標來更新數據存儲索引配置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.