2013-08-29 55 views
0

我有Titan 0.3.2以嵌入模式運行,並且已經能夠通過Gremlin shell(see previous question)創建和查詢ElasticSearch索引。我正在使用默認配置,它調用ES索引「search」。通過Rexster查詢Titan ElasticSearch後端

這些搜索通過小鬼外殼沒有錯誤返回正確的節點:

g.query().has('my_label','abc').vertices() 
g.query().has('my_label',CONTAINS,'abc').vertices() 

但是,如果我嘗試運行通過RexPro這些相同的小鬼查詢,Rexster發回這個錯誤上面的第一個查詢:

java.util.concurrent.ExecutionException: 
javax.script.ScriptException: 
javax.script.ScriptException: 
java.lang.IllegalArgumentException: Index is unknown or not configured: search 

並且這對第二:

​​

類似地,我F I嘗試在通過REST API的索引鍵查詢(GET):

http://localhost:8182/graphs/graph/vertices?key=my_key&value=abc 

我收到同樣的錯誤響應:

{"message":"Index is unknown or not configured: search","error":"Index is unknown or not configured: search"} 

最後,如果我嘗試啓動一個乾淨的數據庫和通過rexpro運行索引創建腳本:

g.makeType().name("my_label").dataType(String.class).indexed("search", Vertex.class).unique(Direction.OUT).makePropertyKey(); 

我看到同樣的未知指數的錯誤:

java.util.concurrent.ExecutionException: 
javax.script.ScriptException: 
javax.script.ScriptException: 
java.lang.IllegalArgumentException: Index is unknown or not configured: search 

因此,Rexster似乎需要一些關於索引後端的附加信息,可能在其配置文件中(我使用的是安裝中包含的默認文件)。任何人都熟悉這個問題?樂意提供更多信息。

回答

2

您可能會混合使用不同的東西,但主要的是從Titan 0.3.2開始,Rexster不會自動導入Titan類,因此您無法使用CONTAINS進行查詢。你需要指定完整的包名當這樣做:

com.thinkaurelius.titan.core.attribute.Text.CONTAINS 

我不能肯定地說還有什麼是錯的,但它看起來像彈性搜索索引的配置不正確。這與Titan Server的Rexster配置文件沒有多大關係。它與你傳遞給包含Titan配置信息的titan.sh的第二個參數有關。確保彈性搜索已正確配置,因爲它在此處顯示的文件中(默認安裝):https://github.com/thinkaurelius/titan/blob/master/config/titan-server-cassandra-es.properties

+0

Stephen,再次感謝您的幫助。我希望其中的一些問題對未來的泰坦用戶有所幫助。完全合格的CONTAINS按照您的描述工作。但是,我的Titan配置文件與鏈接的文件完全匹配,並且當我通過Gremlin shell查詢Titan時,ES正常工作。如果問題不是特定於Rexster的,爲什麼當通過RexPro查詢時卻沒有通過Gremlin shell查看'索引是未知的或未配置的:搜索'? – bcm360

+0

我只是想說這個問題與你提交給titan.sh的rexster.xml沒有關係。這可能與創建索引或「titan-server-cassandra-es.properties」文件有關。在我調用'titan.sh'的時候,我可以通過指定'titan-server-cassandra.properties'而不是'titan-server-cassandra-es.properties'來重新創建這個錯誤。當沒有配置彈性搜索時,如果您嘗試對圖形使用類型製作器,則看起來會出現該錯誤。 –

+0

你說得對我的批處理腳本有問題。看來Titan並沒有正確地讀取我通過它的配置文件,但是gremlin shell能夠找出elasticsearch索引,因爲'cassandra-es.local'配置文件(提供在'g = TitanFactory.open( 「卡桑德拉 - es.local」)')。再次感謝。 – bcm360