Java 如何强制复合索引出现在谷歌云中?
好的,在谷歌云中看到这张图片: 上面说“下面是此应用程序的复合索引。这些索引在应用程序的索引配置文件中进行管理。” 请参阅以下代码:Java 如何强制复合索引出现在谷歌云中?,java,google-app-engine,google-cloud-storage,google-cloud-platform,Java,Google App Engine,Google Cloud Storage,Google Cloud Platform,好的,在谷歌云中看到这张图片: 上面说“下面是此应用程序的复合索引。这些索引在应用程序的索引配置文件中进行管理。” 请参阅以下代码: public static long getPropertyMaxIDStronglyConsistent(String entityName, String propertyName, Key parentKey){ // Order alphabetically by property name: //Key
public static long getPropertyMaxIDStronglyConsistent(String entityName, String propertyName, Key parentKey){
// Order alphabetically by property name:
//Key parentKey=KeyFactory.createKey(parentEntityName, parentName);
Query q = new Query(entityName, parentKey).setAncestor(parentKey)
.addSort(propertyName, SortDirection.DESCENDING);
//List<Entity> results = datastore.prepare(q).asList(FetchOptions.Builder.withDefaults());
List<Entity> results = datastore.prepare(q)
.asList(FetchOptions.Builder.withLimit(5));
if(results.size()>0){
Entity e=results.get(0);
long maxID=(Long)e.getProperty(propertyName);
return maxID;
}
else{
return 0;
}
}
但它仍然不起作用和中描述了应用程序引擎数据存储的索引(Java 7,但原则与Java 8相同)
appengine数据存储的索引在和中进行了描述(Java7,但原理与Java8相同)
我手动添加了索引&English Class索引出现了,但仍然不起作用。不知道为什么?显示您对问题中的索引所做的手动更改,以便我们查看它是否与查询匹配。您好,我更新了我的问题。它还没有起作用!不知道为什么?好的,我稍微更改了配置文件&它创建了一个新的索引。现在它起作用了,但问题是。如何删除旧索引?或者我们可以把旧的索引留在那里吗?如果我们把它放在那里,它会产生任何问题吗?你可以把它放在那里,除非你正在处理大量(数百万)的记录,否则它不会有任何危害。我手动添加了索引-“English Class”索引确实出现了,但仍然不起作用。不知道为什么?显示您对问题中的索引所做的手动更改,以便我们查看它是否与查询匹配。您好,我更新了我的问题。它还没有起作用!不知道为什么?好的,我稍微更改了配置文件&它创建了一个新的索引。现在它起作用了,但问题是。如何删除旧索引?或者我们可以把旧的索引留在那里吗?如果我们把它放在那里,它会产生任何问题吗?你可以把它放在那里,除非你正在处理大量(数百万)的记录,否则它不会有任何危害。
<datastore-indexes autoGenerate="true">
<datastore-index kind="EnglishClass" ancestor="true" source="auto">
<property name="ClassNo" direction="desc"/>
</datastore-index>
</datastore-indexes>