我正在尝试查询数据存储区,我的查询如下所示:
SELECT *
FROM mydb
WHERE Latitude = "18.1" AND Number > "1"
但它不起作用。我在 Datastore 查询框中收到此错误:
GQL 查询错误:您的数据存储区没有此查询所需的复合索引(开发人员提供)。
当我运行我的代码时出现这个错误:
没有找到匹配的索引。推荐的索引是:\n- kind: mydb\n properties:\n - name: Location\n - name: Number\n
像这样工作的简单请求:
SELECT *
FROM mydb
WHERE Number > "1" AND Number < "5"
我在这里只访问一个列,也许这就是为什么?
没有,
然后我尝试了这样的请求:
SELECT *
FROM mydb
WHERE Latitude = "18.1" AND Number = "1"
这行得通。
我试图寻找一个解决方案,我遇到了这个页面:https ://cloud.google.com/datastore/docs/tools/indexconfig#Datastore_About_index_yaml
浏览完该页面后,我发现我需要一个 index.yaml 文件。它应该放在一个名为 WEB-INF 的文件夹中。但是我没有这个文件夹。
这是我的代码的一小段:
Query<Entity> query = Query
.gqlQueryBuilder(Query.ResultType.ENTITY,
"SELECT * FROM " + kind + " WHERE Location = @location AND Number <= @number")
.setBinding("number", "5").setBinding("location", "18.1").build();
QueryResults<Entity> results = datastore.run(query);