【问题标题】:AppEngine - No Indexes ServingAppEngine - 没有索引服务
【发布时间】:2014-06-02 09:07:03
【问题描述】:

我一直在尝试使用 Query.setOrdering(xxxx desc) 但 AppEngine 给出了 ServerError : Unable to process the request。

管理控制台:

com.google.appengine.api.datastore.DatastoreNeedIndexException: no matching index       found.
The suggested index for this query is:
<datastore-index kind="Chat_messages" ancestor="false" source="manual">
    <property name="FROM_TO" direction="asc"/>
    <property name="TIME" direction="desc"/>
</datastore-index>

我在 servlet 中的代码:

Query q=pm.newQuery(Chat_messages.class);
q.setFilter("FROM_TO == email_emailto || FROM_TO == emailto_email");
      q.declareParameters("String email_emailto,String emailto_email");
      q.setRange(0, 50);
      q.setOrdering("TIME desc");

【问题讨论】:

    标签: java google-app-engine indexing google-cloud-datastore


    【解决方案1】:

    使用 Python 运行时,使用开发服务器在本地运行应用程序的过程会生成索引文件。

    【讨论】:

      【解决方案2】:

      您是否真的收到关于没有正确索引的错误?您在 datastore-index.xml 中放置的索引是单个属性索引。这意味着它是由 Datastore 自动构建的,不会显示在您的控制台中。

      您可以看到this page,它描述了您可以执行哪些查询而无需上传任何索引。

      【讨论】:

      • 是的,但是当我使用 Query.setOrdering() 时,应用引擎服务器会给出错误 500:无法处理您的请求。
      • 您应该提供失败的代码 sn-p 和管理控制台日志中的堆栈跟踪副本。
      • 在管理控制台中:未捕获来自 servlet com.google.appengine.api.datastore.DatastoreNeedIndexException 的异常:未找到匹配的索引。此查询的建议索引是:
      • 我在 Servlet 中的代码:查询 q=pm.newQuery(Chat_messages.class); q.setFilter("FROM_TO == email_emailto || FROM_TO == emailto_email"); q.declareParameters("String email_emailto,String emailto_email"); q.setRange(0, 50); q.setOrdering("TIME desc");
      • 日志告诉您要添加到 datastore-indexes.xml 的索引。该索引与您在问题中列出的索引不同。尝试添加列出的然后运行appcfg.sh update_indexes
      猜你喜欢
      • 1970-01-01
      • 2012-06-10
      • 1970-01-01
      • 1970-01-01
      • 2014-10-26
      • 2018-12-29
      • 2023-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多