datastore-indexes.xml リファレンス

App Engine では、エンティティの各プロパティに単純なインデックスが事前定義されています。さらに、App Engine アプリケーションでは、datastore-indexes.xml というインデックス構成ファイルでカスタム インデックスを定義できます。アプリをテストしている間、開発用サーバーで、これらのクエリを実行するときに、アプリケーションで必要となるインデックス構成を生成できます。アプリケーションをアップロードする前に datastore-indexes.xml ファイルを編集することで、インデックスを手動で調整できます。インデックス構成をデプロイして管理する方法については、データストア インデックスの構成をご覧ください。

datastore-indexes.xml ファイルの例を次に示します。

<?xml version="1.0" encoding="utf-8"?>
<datastore-indexes
  autoGenerate="true">
    <datastore-index kind="Employee" ancestor="false">
        <property name="lastName" direction="asc" />
        <property name="hireDate" direction="desc" />
    </datastore-index>
    <datastore-index kind="Project" ancestor="false">
        <property name="dueDate" direction="asc" />
        <property name="cost" direction="desc" />
    </datastore-index>
</datastore-indexes>

構文

<datastore-index> 要素には、次の要素を含めることができます。

要素 説明
<kind> 必須。クエリに対応するエンティティの種類です。
<properties>

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

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

<name>
プロパティのデータストア名です。
<direction>
並べ替える方向。昇順は asc、降順は desc。この値は、クエリの並べ替え順序で使用するプロパティについてのみ必要です。また、クエリで使用する方向と同じである必要があります。デフォルトは asc です。
<ancestor> クエリに祖先句()がある場合は yes。デフォルトは no

自動インデックスと手動インデックス

アプリケーションのクエリで必要になるインデックスを手作業で設定すると、面倒なだけでなく間違えやすくなります。幸いなことに、開発用サーバーでは、インデックスを自動的に構成できます。自動インデックス構成を使用するには、属性 autoGenerate="true"WEB-INF/datastore-indexes.xml ファイルの <datastore-indexes> 要素に追加します。自動インデックス構成は、アプリに datastore-indexes.xml ファイルがない場合にも使用します。

自動インデックス構成を有効にすると、開発用サーバーによって、WEB-INF/appengine-generated/datastore-indexes-auto.xml というファイルがアプリの war/ ディレクトリに保持されます。アプリが、開発サーバーで実行されているときに、データストア クエリを試行し、これに対して対応するインデックスが datastore-indexes.xmldatastore-indexes-auto.xml のいずれにもない場合、サーバーによって、datastore-indexes-auto.xml に適切な構成が追加されます。

アプリケーションをアップロードするときに自動インデックス構成が有効になっている場合、appcfg コマンドでは、datastore-indexes.xmldatastore-indexes-auto.xml の両方を使用して、そのアプリのためにどのインデックスを本番環境で構成する必要があるかを決定します。

autoGenerate="false"datastore-indexes.xml に含まれている場合、開発用サーバーと AppCfg では datastore-indexes-auto.xml のコンテンツを無視します。datastore-indexes.xml にインデックスが指定されていないクエリが、ローカルで実行されているアプリによって実行されると、開発サーバーによって、本番環境のデータストアの場合と同様に、例外がスローされます。

たまに datastore-indexes-auto.xml から datastore-indexes.xml にインデックス構成を移動し、自動インデックス構成を無効にして、開発サーバーでアプリをテストすることをおすすめします。このようにすると、インデックスの保守が簡単になり、2 つのファイルを管理する必要はなくなります。また、インデックス構成がない場合のエラーをテストで確実に再現できます。

インデックス構成ファイルのデプロイ

datastore-indexes.xml ファイルは、アプリケーションのデフォルト サービスの /WEB-INF/ ディレクトリに配置する必要があります。

現在の提供バージョンを変更せずにデータストア インデックス構成ファイルをデプロイするには、次のコマンドを使用します。

appcfg.sh update_indexes <application root path>

使用されていないインデックスの削除

インデックス構成でインデックスを変更または削除しても、元のインデックスは App Engine から自動的に削除されません。これにより、新しいインデックスを作成しながらアプリの古いバージョンを実行したり、新しいバージョンで問題が発見されたらすぐに古いバージョンを復元したりできます。

古いインデックスが不要になったことが確実である場合には、次のコマンドによって App Engine から削除できます。

./appengine-java-sdk/bin/appcfg.sh vacuum_indexes myapp/war
このページは役立ちましたか?評価をお願いいたします。

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

Java 8 の App Engine スタンダード環境