** アップデート **
このクエリの手動インデックスを作成する必要があることを指摘してくれた Alfred Fuller に感謝します。
残念ながら、.NET アプリケーションから JSON API を使用する方法は、公式にサポートされているようには見えません。実際、App Engine の外部のアプリからこれを行う方法が公式にはまったくないように見えます。Cloud Datastore API は App Engine の外部のデータストアへのアクセスを許可するように設計されているため、これは奇妙です。
私が見つけた最も近いハックは、RPC を使用してインデックス定義を http://appengine.google.com/api/datastore/index/add に POST することでした。おそらくFiddlerを使用してappcfg.cmdによって行われた呼び出しを検査するために、誰かがこれを正確に行う方法の生の仕様(つまり、URLパラメーター、本文の正確な外観など)を教えてもらえますか?
** 元の質問 **
docsによると、「クエリは、さまざまなプロパティの等式 (EQUAL) フィルターと、1 つのプロパティの 1 つ以上の不等式フィルターを組み合わせることができます」。
ただし、次のクエリは失敗します。
{
"query": {
"kinds": [
{
"name": "CodeProse.Pogo.Tests.TestPerson"
}
],
"filter": {
"compositeFilter": {
"operator": "and",
"filters": [
{
"propertyFilter": {
"operator": "equal",
"property": {
"name": "DepartmentCode"
},
"value": {
"integerValue": "123"
}
}
},
{
"propertyFilter": {
"operator": "greaterThan",
"property": {
"name": "HourlyRate"
},
"value": {
"doubleValue": 50
}
}
},
{
"propertyFilter": {
"operator": "lessThan",
"property": {
"name": "HourlyRate"
},
"value": {
"doubleValue": 100
}
}
}
]
}
}
}
}
次の応答で:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "FAILED_PRECONDITION",
"message": "no matching index found.",
"locationType": "header",
"location": "If-Match"
}
],
"code": 412,
"message": "no matching index found."
}
}