0

我有 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) 查询索引键:

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

4

1 回答 1

2

您可能会遇到各种情况,但主要是从 Titan 0.3.2 开始,Rexster 不会自动导入 Titan 类,因此您无法使用CONTAINS. 这样做时您需要指定完整的包名称:

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

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

于 2013-08-30T10:32:32.090 回答