Google Cloud Datastore runQuery 返回 412“未找到匹配的索引”

2024-04-08

** 更新 **

感谢 Alfred Fuller 指出我需要为此查询创建手动索引。

不幸的是,从 .NET 应用程序使用 JSON API 似乎没有官方支持的方法。事实上,官方似乎根本没有一种方法可以从 App Engine 之外的应用程序执行此操作,这很奇怪,因为 Cloud Datastore API 的设计目的是允许访问 App Engine 之外的数据存储区。

我能找到的最接近的黑客是使用 RPC POST 索引定义 http://rahulswackyworld.blogspot.com/2010/03/dynamic-indexes-with-google-app-engine.html to http://appengine.google.com/api/datastore/index/add http://appengine.google.com/api/datastore/index/add。有人可以给我如何准确执行此操作的原始规范(即 URL 参数、正文应该是什么样子等),也许使用 Fiddler 来检查 appcfg.cmd 进行的调用?

** 原始问题 **

根据docs https://developers.google.com/datastore/docs/concepts/queries#Datastore_Restrictions_on_queries,“查询可以组合不同属性的等式 (EQUAL) 过滤器,以及单个属性的一个或多个不等式过滤器”。

但是,此查询失败:

{
 "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."
 }
}

JSON API 尚不支持本地索引生成,但我们已经记录了一个过程,您可以按照该过程生成索引的 xml 定义:https://developers.google.com/datastore/docs/tools/indexconfig#Datastore_Manual_index_configuration https://developers.google.com/datastore/docs/tools/indexconfig#Datastore_Manual_index_configuration

请尝试一下,如果不起作用请告诉我们。

这是一个临时解决方案,我们希望尽快用自动本地索引生成来替换它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google Cloud Datastore runQuery 返回 412“未找到匹配的索引” 的相关文章

  • 有没有办法通过 Google Datastore 事件触发 Google Cloud Function?

    您似乎可以从 Google Cloud Platform 获取事件 但不能从 Google App Engine 服务获取事件 这是为什么 谢谢 Cloud Functions 是 GCP 上的一项新服务 而 Cloud Datastore
  • 从 ndb.KeyProperty() 添加、更新、删除 - Google Cloud Datastore NDB

    这是我的多对多关系 models class ModelA ndb Model name ndb StringProperty required true model b ndb KeyProperty kind ModelB repeat
  • 如何在 Google Datastore 中添加复合索引?

    我现在使用 Google Datastore 作为我公司的数据库 今天 我做了一个索引 它成功地列在 索引 中 但是我创建的索引的大小和实体是空的 谷歌数据存储的文档说索引是自动生成的 但事实并非如此 是否有任何命令或执行某些操作来生成索引
  • 将 Google App Engine 数据存储导出到 MySQL?

    我们正在考虑在 Google App Engine 上构建一些基础设施 但我们担心如果它无法扩展 我们将来需要导出数据并在我们自己的服务器上运行 有没有办法从 App Engine 数据存储区导出到 MySQL 就数据导出而言 批量下载器
  • NDB 中的 Entity.all(keys_only=True).fetch(20) 相当于什么?

    如何在 NDB 中获得以下查询的等效结果 Entity all keys only True fetch 20 我知道你可以通过 keys only True to the iter 方法 但是 如果我想执行仅获取键的操作 我该如何在 ND
  • toDerInputStream 拒绝标签类型 123

    我正在尝试运行数据存储入门示例 网址为https developers google com datastore docs getstarted start java https developers google com datastor
  • 谷歌数据存储中的节点分页

    我在使用 Google Datastore 进行分页时遇到问题 我有一个查询 没有限制 有几百个结果 我想检索 5 个 将它们发送回用户 如果用户想要更多 他们会检索下 5 个 根据文档 我创建了查询 var query datastore
  • 如何更新 NDB 模型的架构 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我已经看到了这个问题的解决方案App Engine 的较旧 DB 数据存储区 API https cloud google com appe
  • 为什么在未提供祖先的情况下查询不返回结果?

    为什么在未指定祖先时过滤器不起作用 无论祖先如何 它是否都应该适用于实体类型 我的用例 我已经设置了多个带有父键的实体 该键与另一个实体 主实体 相对应 以便我可以通过祖先 主实体键 获取子级 然而问题似乎是我无法再查询实体属性 除非我指定
  • 出于计费目的,ndb 缓存的读取操作是否仍算作数据存储读取操作?

    From NDB 缓存 https cloud google com appengine docs standard python ndb cache NDB 为您管理缓存 有两个缓存级别 上下文缓存和 App Engine 标准缓存的网关
  • App Engine 数据存储区 - 开发服务器限制

    我正在尝试测试 Google App Engine 数据存储数据库的效率 我想知道它查询大型数据集的速度有多快 总的来说 我的意思是大约 5 1000 万个同类实体 devserver 只允许我输入 1000 个同类实体 有办法提高这个限制
  • 如何将 Firestore 数据库从 Google 存储桶导出到 Json 文件

    情况如下 我有一个 Firestore 数据库 我每天都会将其下载到 Google Cloud Storage Bucket 作为备份 如果我想在本地下载它 我使用这个命令gsutil m cp r gs BUCKET PATH DESTI
  • Google App Engine - 删除 JPQL 查询和级联

    我注意到 使用下面的 JPQL 查询时 PersistentUser 的子项不会被删除 但是 如果我执行以下操作 子项将被删除entityManager remove object 这是预期的吗 为什么下面的 JPQL 查询不执行级联删除
  • Google App Engine 尝试访问开发数据

    我在本地计算机上运行我的应用程序 并使用远程 API 访问生产端的数据存储区 一切都工作得很好 直到我尝试在谷歌应用程序引擎启动器中添加第二个应用程序 我相信这就是导致问题的原因 因为我必须将我正在处理的内容与一些更新的代码合并 并想在我去
  • 根实体中的 GAE 事务

    我是 GAE 新手 对数据存储事务有一些疑问 例如 我有一个用户实体 当用户在 Facebook 上添加我的应用程序时创建该实体 我通过 Facebook API 获得了一些属性 但我想为用户添加用户名 并且该用户名必须是唯一的 所以在事务
  • Google数据存储-在没有热点的情况下对创建日期字段进行索引

    我正在使用 Google Datastore 需要查询它来检索一些实体 这些实体需要按从最新到最旧的顺序排序 我的第一个想法是拥有一个包含时间戳的 date created 属性 然后我会索引该字段并对该字段进行排序 这种方法的问题是它会导
  • Google App Engine 数据存储区数据隐私

    我正在使用 Google App Engine 和 Datastore 那里正在发生非常奇妙的事情 但我忍不住想知道 Google 可以如何处理我的应用程序存储在数据存储区中的数据 有人可以用简单的话解释一下吗 Thanks Google
  • gcp - 从数据存储中获取所有实体

    我正在尝试从数据存储中获取所有数据实体 当我遇到谷歌文档时 我发现了类似的内容查询投影 链接到文档 https cloud google com datastore docs concepts queries 这是我用来从数据存储区获取所有
  • Google Cloud Datastore runQuery 返回 412“未找到匹配的索引”

    更新 感谢 Alfred Fuller 指出我需要为此查询创建手动索引 不幸的是 从 NET 应用程序使用 JSON API 似乎没有官方支持的方法 事实上 官方似乎根本没有一种方法可以从 App Engine 之外的应用程序执行此操作 这
  • 在 oauth2 SignedJwtAssertionCredentials 中获得“invalid_grant”

    我正在尝试在服务器到服务器 JSON API 场景中创建 oauth2 access token 但它因 invalid grant 错误而失败 请帮助 from oauth2client client import SignedJwtAs

随机推荐