Java war文件中包含index.yaml文件的位置
我在Google计算引擎上部署了一个java web应用程序。我正在使用谷歌云数据存储来存储数据。我正在使用GQL查询生成器获取数据。只要只涉及一个参数,我就可以从数据存储中检索数据。简单的查询,如:Java war文件中包含index.yaml文件的位置,java,google-cloud-datastore,google-compute-engine,war,Java,Google Cloud Datastore,Google Compute Engine,War,我在Google计算引擎上部署了一个java web应用程序。我正在使用谷歌云数据存储来存储数据。我正在使用GQL查询生成器获取数据。只要只涉及一个参数,我就可以从数据存储中检索数据。简单的查询,如: "SELECT * FROM logintracker WHERE logdate='2017-10-25' " 我干得不错。但是,如果我添加一些附加参数,如: "SELECT * FROM logintracker WHERE logdate='2017-10-25' ORDER By lo
"SELECT * FROM logintracker WHERE logdate='2017-10-25' "
我干得不错。但是,如果我添加一些附加参数,如:
"SELECT * FROM logintracker WHERE logdate='2017-10-25' ORDER By logtime DESC"
不要工作。我得到一个回复,说数据存储需要开发者提供的索引文件。我做了一些研究,发现我需要在index.yaml文件中指定我的索引。以下是我的index.yaml文件:
indexes:
- kind: logintracker
ancestor: no
properties:
- name: logtime
direction: desc
- name: logdate
这是我的问题。我应该在我的应用程序war文件中的何处包含此index.yaml文件。或者是否有其他位置需要将index.yaml文件直接上传到服务器上,就像在云存储中一样?需要这些信息的不是您的应用程序,而是数据存储本身。这就是为什么索引配置不是专门为应用程序配置的,而是直接上传到GCP(根据应用程序类型,可以单独上传,也可以与应用程序一起上传) 如果您使用的是数据存储模拟器,则文件需要位于特定位置。发件人:
索引.yaml
位于/WEB-INF/
文件夹默认情况下,包含
WEB-INF/appengine-generated/index.yaml
~/.config/gcloud/emulators/datastore/
有关更多详细信息,请参阅
至于将文件上载到GCP(即更新实际数据存储索引),请从:
以下是使用gcloud
工具的典型工作流:
[……]
index.yaml
文件,如中所示
下面是一个例子:
gcloud datastore create-indexes ~/.config/gcloud/emulators/datastore/WEB-INF/index.yaml
示例路径假定您尚未为设置特定目录
选择权。如果设置了特定的目录,
修改路径以使用index.yaml
文件的路径index.yaml
文件中删除它们,然后调用
命令:
如果已为该选项设置了特定目录,
修改示例中的路径以使用到index.yaml的路径
文件
如果您使用手动创建的
index.yaml
文件,则需要指定该文件的位置,而不是在上述引号中提到的gcloud datastore
命令中指定~/.config/gcloud/emulators/datastore/WEB-INF/index.yaml
。谢谢@DanCornilescu,为您的应用程序添加一些额外信息答复我遵循了您的过程,但我不知道如何检查是否成功添加了索引。由于我不知道这一点,我最终为同一索引配置创建了多个条目。对于未来的用户,您可以在数据存储中的“索引”选项中检查索引。它还显示每个索引配置的状态。一旦状态显示为“正在服务”,您就可以使用索引了。正确。我的第一份推荐信所在的那一页上提到了我。
gcloud datastore cleanup-indexes ~/.config/gcloud/emulators/datastore/WEB-INF/index.yaml