我使用Titan 1.0和elasticsearch作爲後端。 從titan文檔中,我瞭解到使用elasticsearch時,我們在構建索引時使用mixedIndex。 這是我的使用案例和問題: 我正在創建圖書館的註冊數據的圖形數據庫,我有註冊時間的數據以及其他個人信息,如姓名和年齡。我想查詢在給定時間範圍內註冊的所有用戶,換句話說,我希望查詢的數字比較函數。這是我如何創建索引:Titan 1.0混合索引不能處理警告 - 查詢需要迭代所有頂點
PropertyKey propertyKey = mgmt.makePropertyKey("registTime").dataType(Date.class)
.cardinality(Cardinality.SINGLE).make()
timeIndex = mgmt.buildIndex("registeredTime",Vertex.class)
.addKey("registTime", Mapping.TEXTSTRING.asParameter())
.buildMixedIndex("search");
的timeIndex創建成功,但是,當我想註冊的時間查詢:
g.V().has("registTime", gt("2015-01-01 00:00:00.000+0000"))
它給了我:
WARN com.thinkaurelius.titan.graphdb.transaction.StandardTitanTx - Query requires iterating over all vertices [()]. For better performance, use indexes
它給了我一個空的結果,雖然我用gremlin命令檢查並確認數據就在那裏。我做錯了什麼?我怎麼解決這個問題?
感謝您的快速回復。我發現我的索引沒有正確創建,不知是否因爲數據類型(Date.class)。但我從泰坦文件瞭解到,混合索引也支持Date類型。如果我將其更改爲String.class,它將被正確創建。 – RWM
而且,即使它被正確創建,我在mgmt.updateIndex行(mgmt.getGraphIndex(「registeredTime」),SchemaAction.ENABLE_INDEX).get();下面也會得到NullPointerException。 。 – RWM