2012-02-09 49 views

回答

3

默認情況下,每個實體都被編入索引(除非它的TextProperty或BlobProperty),如果您不希望它被索引(爲了提高性能和實體寫入成本),您需要(也應該)將屬性索引屬性設置爲False 。

在管理控制檯中沒有指示是否索引了某個屬性,您可以嘗試在數據存儲區視圖的GQL中執行「按特性從EntityType順序中選擇*」,並查看它是否失敗。

+0

它的工作原理。 「order by」查詢只是簡單地跳過那些沒有該屬性索引的實體。如果該類型的所有實體都沒有該屬性的索引,則返回空的結果。 – pcjuzer 2012-02-10 08:36:39

+0

@shay我認爲你有一個錯字,因爲它沒有任何意義。如果你希望它被索引,那麼將屬性索引屬性設置爲False?你不是說把它設爲真? – Houman 2015-01-17 11:30:55

+1

@Houman謝謝!固定。 – 2015-01-17 18:50:27

0

查看「數據存儲索引」界面,其鏈接位於應用程序引擎儀表板的左側導航菜單中。

在那裏您會看到索引列表和已應用索引的特定屬性。

+0

這不合適。綜合指數只在那裏。 – pcjuzer 2012-02-09 09:01:56

3

如果你已經對一些性質indexed=Trueindexed=False之間隨着時間的推移翻轉,並有一組兩種制度下寫成的實體,那麼你就會有一些特性被索引,有些則不是。這是你所處的情況嗎?

如果您的代碼沒有可靠的歷史記錄,試圖確定您是否處於這種情況有點棘手,具體取決於您擁有多少實體。您可以通過查看實體上的僅鍵查詢是否返回與篩選可疑屬性的查詢不同數量的鍵來確定您是否處於不一致狀態。過濾器不會找到未索引的屬性。如果你有很多實體,你必須以某種方式分割計數(以避免在返回大量實體的長查詢中超時)。

如果你確定你確實有不一致的索引並且希望修復你的實體以保持一致,那麼通常的做法是編寫一個觸摸所有不穩定實體的mapreduce,並將問題放在必要的屬性上。

+0

如果您確實想知道,比如說保存數據存儲區寫入操作,您還可以檢查協議緩衝區。可能不值得它,除非你有很多數據處於混合狀態。 – 2012-02-10 07:31:33

+0

我想檢查Datanucleus JPA註釋是否正常工作,這在Max Ross的[鏈接](http://gae-java-persistence.blogspot.com/2009/11/unindexed-properties.html)blogpost [link ]。 – pcjuzer 2012-02-10 08:40:05