通过Rexster查询Titan ElasticSearch后端

时间:2013-08-29 20:19:30

标签: gremlin titan rexster

我在嵌入模式下运行Titan 0.3.2,并且能够通过Gremlin shell(see previous question)创建和查询ElasticSearch索引。我使用默认配置,它调用ES索引“搜索”。

这些搜索通过Gremlin shell返回正确的节点而没有错误:

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

但是,如果我尝试通过RexPro运行这些相同的Gremlin查询,Rexster会针对上面的第一个查询发回此错误:

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

这是第二次:

java.util.concurrent.ExecutionException: 
javax.script.ScriptException: 
javax.script.ScriptException: 
groovy.lang.MissingPropertyException: No such property: CONTAINS for class: Script3

同样,如果我尝试通过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需要一些关于索引后端的其他信息,可能在其配置文件中(我使用安装中包含的默认值)。有谁熟悉这个问题?很高兴提供更多信息。

1 个答案:

答案 0 :(得分:2)

你可能会发生各种各样的事情,但主要的是从Titan 0.3.2开始,Rexster不会自动导入Titan类,因此你无法使用CONTAINS进行查询。这样做时需要指定完整的包名称:

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

我不能确定还有什么问题,但看起来弹性搜索索引配置不正确。这与Titan Server的Rexster配置文件没有多大关系。它更多地与传递给titan.sh的第二个参数有关,后者包含Titan配置信息。确保正确配置弹性搜索,因为此处显示的文件(默认为安装):https://github.com/thinkaurelius/titan/blob/master/config/titan-server-cassandra-es.properties