データストアはインデックスが構築されたクエリしか受け付けません

開発用サーバでは index.yaml で未定義のインデックスが使用されると自動的に定義を追加して対処しますが、本サーバでは未定義のインデックス・クエリが実行されるとエラーになります。
一方、インデックスはプロパティの組み合わせ数が多いほど、本サーバ上でインデックス構築に時間と CPU を費やすことになります。
絞り込み検索サービスなどでは、開発用サーバ上でうまくいったことが、本サーバ上ではうまくいかないことが出てくると思います。
例として、2ch】キーワードあんてな では、キーワード絞り込みを 3 つまでに限定しています。 頻繁にキーワードが追加されることと、そのインデックス構築コストを考慮した結果です。
この場合の index.yaml には以下のインデックスが記述されています(自動生成された)。

- kind: Article
  properties:
  - name: keywords
  - name: update
    direction: desc

- kind: Article
  properties:
  - name: keywords
  - name: keywords
  - name: update
    direction: desc

- kind: Article
  properties:
  - name: keywords
  - name: keywords
  - name: keywords
  - name: update
    direction: desc

インデックス定義を自動生成させるため、開発用サーバ上で一度は使用するであろうクエリを実行しておくべきでしょう。
また、一度生成されたインデックス定義は自動で削除されません。 index.yaml には開発中の試行錯誤で作られた無駄なインデックス定義も残っているでしょう。
index.yaml から不要な定義を削除した場合は、念のためもう一度、開発用サーバ上で全てのクエリを実行しておいたほうが無難です。


参考:http://code.google.com/intl/ja/appengine/docs/python/datastore/queriesandindexes.html

プログラミング Google App Engine

プログラミング Google App Engine