java-谷歌云数据存储-不平等返回“;未找到匹配的索引";

java-谷歌云数据存储-不平等返回“;未找到匹配的索引";,java,google-cloud-datastore,inequality,Java,Google Cloud Datastore,Inequality,在Android Studio中,我试图使用Android应用程序中的Google Clood数据存储 以谷歌为例,我可以将汤姆(32岁)和露西(30岁)添加为Acme公司的个人和子女。我可以在Google开发者控制台的数据存储中看到这两个条目 如果我按如下所示设置查询筛选器,我可以从公司Acme检索子项 Key acmeKey = makeKey("Company", "Acme").build(); makeFilter("__key__", PropertyFilter.Oper

在Android Studio中,我试图使用Android应用程序中的Google Clood数据存储

以谷歌为例,我可以将汤姆(32岁)和露西(30岁)添加为Acme公司的个人和子女。我可以在Google开发者控制台的数据存储中看到这两个条目

  • 如果我按如下所示设置查询筛选器,我可以从公司Acme检索子项

    Key acmeKey = makeKey("Company", "Acme").build();
    makeFilter("__key__",
        PropertyFilter.Operator.HAS_ANCESTOR,
        makeValue(acmeKey)).build()));
    
    • 如果我只想检索年龄等于32岁的人,我会添加到上面的过滤器
      makeFilter(“age”,PropertyFilter.Operator.equal,makeValue(32)).build()
      然后,我找到了那个叫汤姆的人

  • 但是,如果不使用
    操作符.EQUAL
    而使用
    操作符.LESS_-THAN
    操作符.LESS_-THAN
    等不等式过滤器,则会得到错误“未找到匹配索引”

我认为这是索引的问题,但我真的不明白如何设置索引。我使用Android Studio,但我根本不使用应用程序引擎。我只想用一个简单的
WHERE age>32
检索数据,就像我使用MySQL一样

顺便说一句,我尝试使用GQL,得到了完全相同的问题,使用
EQUAL
,但不使用
大于
(和中相同)


那么,有人知道我如何解决这个问题吗?谢谢

使用该工具处理云数据存储的索引配置

如果您能够对
gcd.sh
提供的本地数据存储运行查询,这将是最简单的。该工具可以准确地确定您需要哪些索引,然后您可以使用
updateindex
命令在生产应用程序上配置它们

如果没有,也可以手动配置索引:

  • gcd.sh创建-d
  • /WEB-INF/datastore index.xml
    处创建一个包含以下内容的文件:
  • 
    

  • gcd.sh更新索引

  • 文件的确切内容将取决于要运行的查询。提供有关索引文件格式的其他详细信息。

    因此,正如Ed Davidson刚才所说的,一切都是通过gcd完成的

    我花了很多时间才明白该做什么,所以我把我的经验放在下面,也许这会对某人有所帮助。我正在使用Ubuntu,我不知道其他操作系统

  • 在下载文件夹中下载
  • 解压缩下载的文件
  • 在控制台中,转到未压缩文件夹
    cd下载/gcd-v1beta2-rev1-2.1.1
  • 然后,
    /gcd.sh create-d myDataset myProjectName
    ,其中myDataset是中的项目ID(它由两个随机名词和一个数字组成)
  • 转到未压缩文件夹gcd-v1beta2-rev1-2.1.1,您将看到一个文件夹myProjectName。在此myProjectName文件夹中,在WEB-INF文件夹中创建一个文件datastore-indexes.xml
  • 正如Ed Davidson所说,因为我想检索拥有祖先公司且年龄超过20岁的人,所以我必须添加索引
    
    
    Hi,谢谢你的回复,Ed。正如你所说,我刚刚通过向WEB-INF文件夹添加一个datastore-indexes.xml文件,向我的数据存储添加了一个索引。最后它成功了。我现在可以在谷歌开发者控制台下看到索引,我可以检索年龄>20岁的人。但我只是想知道,为什么这么复杂?为什么我们不能在Google开发者控制台上传xml文件呢?我花了一个多小时才明白该做什么(可能是因为我的英语很差:-/)