[英]GQL basic query in Datastore Viewer console returns “No results in Empty namespace.”
我遇到了一個非常基本的問題,即基於簡單的WHERE <column> = 'xxx'
類型查詢從Datastore Viewer控制台查詢數據。
這是我的虛擬數據的快照:
據我了解,我應該能夠使用SELECT * FROM User WHERE email = 'a'
基於“ email”字段或任何其他字段查詢該記錄。 但這將返回“在空名稱空間中沒有結果”。 如下所示:
在這個相關問題中,我看不出有什么不同:
我已經在實體編輯器中檢查了該記錄,並可以確認email字段的值為“ a”,而沒有任何額外的隱藏空格:
Mihail建議我需要為此查詢創建索引。
按照Java Datastore Index Configuration文檔 ,我在/ war / WEB-INF中創建了datastore-indexes.xml
文件:
<?xml version="1.0" encoding="utf-8"?>
<datastore-indexes autoGenerate="false">
<datastore-index kind="User" ancestor="false">
<property name="email" direction="asc" />
</datastore-index>
</datastore-indexes>
我無法部署我的項目,因為它不允許上載該索引。 我收到的錯誤消息是:
對於entity_type創建復合索引失敗:“用戶”祖先:falseProperty {名稱:“電子郵件”方向:1}:此索引:entity_type:“用戶”祖先:falseProperty {名稱:“電子郵件”方向:1}是不必要的,由於內置了單一屬性索引。請從索引文件中將其刪除,然后升級到最新版本的SDK(如果尚未安裝)。
聽起來email
屬性未建立索引,並且您無法對未索引的屬性進行任何查詢,即使是像這種簡單的查詢也是如此,因為如果您擁有數百萬個用戶,那么該查詢將必須獲取所有百萬個實體才能找到它們你需要。
您所需要做的就是為email
屬性建立索引,但請注意,它將不會處理過去的實體。 您將需要重新保存所有過去的實體,以便應用新索引。
使索引的屬性 :
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.