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

Gremlin 在Titan(Cassandra)中已存在的顶点属性上创建索引?,gremlin,titan,Gremlin,Titan,我正在使用Titan服务器(Cassandra)V0.3.1。我想在我已经开始使用的顶点键/属性上创建索引。然而,Titan在其报告中解释说: 要按关键点索引顶点,必须创建相应的关键点索引 在顶点特性中首次使用关键点之前 gremlin> g.createKeyIndex("my_key",Vertex.class) ==>null 如果我尝试在已存在的字段上创建索引,我会看到预期的错误: gremlin> g.createKeyIndex("my_key",Vertex.c

我正在使用Titan服务器(Cassandra)V0.3.1。我想在我已经开始使用的顶点键/属性上创建索引。然而,Titan在其报告中解释说:

要按关键点索引顶点,必须创建相应的关键点索引 在顶点特性中首次使用关键点之前

gremlin> g.createKeyIndex("my_key",Vertex.class)
==>null
如果我尝试在已存在的字段上创建索引,我会看到预期的错误:

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中已经使用的字段上创建索引的最简单方法是什么?

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

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

尝试此小精灵查询:

gremlin> g.V.each{g.removeVertex(it)}
您不需要手动删除边,因为如果删除顶点,所有与其关联的边都将自动删除。要删除所有顶点,需要使用迭代查询

清除图形后,将不需要新的键空间。然后,您可以使用:

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

谢谢你的回答——不幸的是,在这方面似乎没有做到。我认为
g.V.each{g.removeVertex(it)}
大致相当于
g.V.remove()
()。当我尝试您删除顶点的替代方法时,Titan也有同样的抱怨:
无法将索引添加到已存在的属性键:my_key
。您在删除后提交了事务吗?我提交了,没有区别:
gremlin>g.V.each{g.removevevertex(it)};g、 提交();g、 createKeyIndex(“我的密钥”,Vertex.class);无法将索引添加到已存在的属性键:my_key