Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java war文件中包含index.yaml文件的位置_Java_Google Cloud Datastore_Google Compute Engine_War - Fatal编程技术网

Java war文件中包含index.yaml文件的位置

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

我在Google计算引擎上部署了一个java web应用程序。我正在使用谷歌云数据存储来存储数据。我正在使用GQL查询生成器获取数据。只要只涉及一个参数,我就可以从数据存储中检索数据。简单的查询,如:

"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