Gremlin 通过Rexster查询Titan ElasticSearch后端

Gremlin 通过Rexster查询Titan ElasticSearch后端,gremlin,titan,rexster,Gremlin,Titan,Rexster,我已经在嵌入式模式下运行了Titan 0.3.2,并且能够通过Gremlin shell()创建和查询ElasticSearch索引。我使用的是默认配置,称ES索引为“搜索” 这些搜索通过Gremlin shell返回正确的节点,没有错误: g.query().has('my_label','abc').vertices() g.query().has('my_label',CONTAINS,'abc').vertices() 但是,如果我试图通过RexPro运行这些相同的Gremlin查询,

我已经在嵌入式模式下运行了Titan 0.3.2,并且能够通过Gremlin shell()创建和查询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)查询索引键:

我收到了相同的错误响应:

{"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似乎需要一些关于索引后端的附加信息,可能在其配置文件中(我使用的是安装中附带的默认信息)。有人熟悉这个问题吗?很乐意提供更多信息。

您可能会遇到各种情况,但最主要的是,从Titan 0.3.2开始,Rexster不会自动导入Titan类,因此您无法查询
包含的
。执行此操作时,需要指定完整的程序包名称:

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

我不能肯定还有什么问题,但弹性搜索索引似乎没有正确配置。这与Titan服务器的Rexster配置文件没有多大关系。它与传递给
titan.sh
的第二个参数有关,该参数包含titan配置信息。确保弹性搜索已正确配置,如此处所示(安装时默认设置):

Stephen,再次感谢您的帮助。我希望这些问题中的一些能对未来的Titan用户有所帮助。完全限定的
包含按您所述工作的
。但是,我的Titan配置文件与您链接的文件完全匹配,并且当我通过Gremlin shell查询Titan时,ES可以正常工作。如果问题不是Rexster特有的,为什么我在通过RexPro而不是通过Gremlin shell查询时会看到
索引未知或未配置:search
?我只是说问题与您提供给titan.sh的Rexster.xml无关。这可能与创建索引或
titan服务器cassandra es.properties
文件有关。我可以通过指定
titan服务器cassandra.properties
来重新创建该错误,而不是在调用
titan.sh
时指定
titan服务器cassandra es.properties
。当弹性搜索未配置时,如果您尝试对图形使用类型生成器,似乎会出现该错误。您完全正确,我的批处理脚本存在问题。看起来Titan没有正确读取我传递给它的配置文件,但是由于
cassandra es.local
config文件(在
g=TitanFactory.open(“cassandra es.local”)
中提供),gremlin shell能够计算出elasticsearch索引。再次感谢。
com.thinkaurelius.titan.core.attribute.Text.CONTAINS