在Titan(Cassandra)中已存在的顶点属性上创建索引?

时间:2013-06-15 15:28:32

标签: gremlin titan

我正在使用Titan Server(Cassandra)v 0.3.1。我想在我已经开始使用的顶点键/属性上创建索引。然而,在他们的documentation中,泰坦解释说:

  

要按键索引顶点,必须创建相应的键索引   在密钥首次用于顶点属性之前。

如果我尝试在已存在的字段上创建索引,我会看到预期的错误:

gremlin> g.createKeyIndex("my_key",Vertex.class)
Cannot add an index to an already existing property key: my_key

然而,即使我试图通过删除所有顶点和放大来清除图形。边缘,我看到同样的错误:

gremlin> g.E.remove()
==>null
gremlin> g.V.remove()
==>null
gremlin> g.createKeyIndex("my_key",Vertex.class)
Cannot add an index to an already existing property key: my_key

即使删除了所有图形元素,似乎my_key仍然存在于底层数据存储中。这与文档一致(即使元素已被删除,属性已经“首次使用”),但似乎值得一试。

我的下一步将是重新创建一个新的Cassandra数据存储,但我想知道是否有更好的选择。

在已经在Titan中使用的字段上创建索引的最简单方法是什么?

2 个答案:

答案 0 :(得分:3)

将Titan指向新的Cassandra数据存储,并在插入具有该属性的任何元素之前创建索引。

gremlin> g.createKeyIndex("my_key",Vertex.class)
==>null

答案 1 :(得分:3)

试试这个gremlin查询:

gremlin> g.V.each{g.removeVertex(it)}

您无需手动删除边缘,因为如果删除了顶点,则会自动删除与其关联的所有边。并删除所有顶点,您需要使用迭代查询。

清除图表后,您将不需要新的KeySpace。然后您可以使用:

gremlin> g.createKeyIndex("my_key",Vertex.class)