日付を含む複数のエンティティを検索していますが、Search API は、並べ替えという 1 つのことを除いて、それらすべてでうまく機能します。
これが私のエンティティの1つのデータモデルです(もちろん単純化されています):
class DepositReceipt(ndb.Expando):
#Sets creation date
creation_date = ndb.DateTimeProperty(auto_now_add=True)
search.Document
whereを作成するコードde
は、エンティティのインスタンスです。
document = search.Document(doc_id=de.key.urlsafe(),
fields=[search.TextField(name='deposit_key', value=de.key.urlsafe()),
search.DateField(name='created', value=de.creation_date),
search.TextField(name='settings', value=de.settings.urlsafe()),
])
これにより、有効なドキュメントが返されます。
そして最後に問題の行。公式の GAE Search API チュートリアルからこのスニペットを取得し、並べ替えの方向を にDESCENDING
変更し、検索式をcreated
(上記の日付プロパティDocument
) に変更しました。
expr_list = [search.SortExpression(
expression="created", default_value='',
direction=search.SortExpression.DESCENDING)]
これは重要ではないと思いますが、残りの検索コードは次のようになります。
sort_opts = search.SortOptions(expressions=expr_list)
query_options = search.QueryOptions(
cursor=query_cursor,
limit=_NUM_RESULTS,
sort_options=sort_opts)
query_obj = search.Query(query_string=query, options=query_options)
search_results = search.Index(name=index_name).search(query=query_obj)
本番環境では、次のエラー メッセージが表示されます。
InvalidRequest: Failed to parse search request "settings:ag5zfmdoaWRvbmF0aW9uc3IQCxIIU2V0dGluZ3MYmewDDA"; failed to parse date
を他のものに変更すると、expression="created"
完全に正常に機能します。これは、日付を使用する他のエンティティ タイプでも発生するため、何が起こっているのかわかりません。アドバイス?