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 という名前のリスト要素が 1 つだけあります。このリストの中の各要素は、アプリケーションのインデックスの 1 つを表します。

個々のインデックスは、次の要素を持つことができます。

要素 説明
kind 必須です。クエリに対応するエンティティの種類です。これは kind 引数として、エンティティ作成時に datastore.NewKey に渡す必要があります。
properties

インデックスの列として並べ替える順に指定したプロパティのリストです。まず、等式フィルタで使用するプロパティ、次に、不等式フィルタで使用するプロパティ、そして並べ替え順序とその方向を指定します。

このリスト内の各要素には、次の要素を指定します。

name
プロパティのデータストア名です。
direction
並べ替えの方向です。昇順の場合は asc、降順の場合は desc を指定します。この値は、クエリの並べ替え順序で使用するプロパティについてのみ必要です。また、クエリで使用する方向と同じである必要があります。デフォルトは asc です。
ancestor クエリに祖先句(Query.ancestor())がある場合は 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
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Go の App Engine スタンダード環境