index.yaml 參考資料

App Engine 會針對實體的各個屬性預先定義簡單的索引。App Engine 應用程式可在名為 index.yaml 的索引設定檔中定義進一步的自訂索引。當您測試應用程式時,開發伺服器可在應用程式執行查詢的過程中,產生應用程式需要的索引設定。您可以在上傳應用程式之前編輯 index.yaml 檔案,以手動方式微調索引。請參閱設定 Datastore 索引以瞭解如何部署和管理索引設定。

範例

以下是 index.yaml 檔案範例:

indexes:

- kind: Cat
  ancestor: no
  properties:
  - name: name
  - name: age
    direction: desc

- kind: Cat
  properties:
  - name: name
    direction: asc
  - name: whiskers
    direction: desc

# This pound sign is the syntax for a comment.

- kind: Store
  ancestor: yes
  properties:
  - name: business
    direction: asc
  - name: owner
    direction: asc

語法

index.yaml 的語法採用 YAML 格式index.yaml 檔案具有名為 indexes 的單一清單元素。清單中的每個元素都代表應用程式的一個索引。

索引項目可以有下列元素:

元素 說明
kind 必要元素。查詢的實體種類。通常是定義實體模型的 Model 類別名稱。
properties

依排序順序,以索引欄形式加入的屬性清單:先加入用於等式篩選器的屬性,再加入用於不等式篩選器的屬性,然後是排序順序及其排序方向。

此清單中的每個元素都具有下列元素:

name
屬性的資料儲存庫名稱。
direction
排序方向,asc 代表遞增,desc 代表遞減。僅限在查詢的排列順序中使用的屬性才需要這個元素,且必須符合查詢採用的方向。預設值為 asc
ancestor 如果查詢包含祖系子句 (Query.ancestor() 或 GQL ANCESTOR IS 子句),則設為 yes。預設值為 no

自動和手動索引

當開發網路伺服器將產生的索引定義新增到 index.yaml,會視需要將定義插入到下列一行文字的底下:

# AUTOGENERATED

開發網路伺服器將這一行下方的所有索引定義視為自動項目,而且會在應用程式執行查詢時,更新這一行下方現有的定義。

系統會將這一行上方的所有索引定義視為手動控制,開發網路伺服器不會更新這些定義。網路伺服器僅會變更這一行下方的定義,而變更的前提是整個 index.yaml 檔案並未描述負責應用程式執行查詢的索引。如要掌控自動索引定義,請將其移至這一行上方。

部署索引設定檔

如要部署索引設定檔,請執行以下指令:

gcloud

gcloud app deploy index.yaml

appcfg

如果您安裝的是原始的 App Engine SDK,則可以執行:

appcfg.py update_indexes [YOUR_APP_DIR]

刪除不再使用的索引

在索引設定中變更或移除索引時,原始索引並不會從 App Engine 中自動刪除。因此,您可以在執行舊版應用程式的同時建構新的索引,也可以在新版出現問題時立即將其還原為舊版。

如果確認已不再需要這些舊的索引,則可以執行下列指令,將索引從 App Engine 中刪除:

gcloud datastore cleanup-indexes index.yaml
本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Python 2 適用的 App Engine 標準環境