Ich benutze Titan Server (Cassandra) v 0.3.1. Ich möchte einen Index für einen Vertexschlüssel/eine Eigenschaft erstellen, die ich bereits verwendet habe. Doch in ihren documentation, Titan erklärt, dass:Erstellen Sie einen Index für eine Vertex-Eigenschaft, die bereits in Titan (Cassandra) existiert?
To index vertices by key, the respective key index must be created before the key is first used in a vertex property.
Wenn ich versuche, einen Index auf einem Feld zu erstellen, die bereits vorhanden ist, ich einen Fehler sehen wie erwartet:
gremlin> g.createKeyIndex("my_key",Vertex.class)
Cannot add an index to an already existing property key: my_key
Aber selbst wenn ich versuchen, das Diagramm zu löschen, indem sie alle Ecken & Kanten zu entfernen, sehe ich den gleichen Fehler:
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
So scheint es, dass my_key
in t andauert Der zugrunde liegende Datenspeicher bleibt auch nach dem Entfernen aller Grafikelemente erhalten. Dies steht im Einklang mit den Dokumenten (obwohl Elemente gelöscht wurden, die Eigenschaft wurde bereits "zuerst verwendet"), aber schien eine Spritze wert.
Mein nächster Schritt wird sein, einen neuen Cassandra-Datenspeicher zusammen neu zu erstellen, aber ich frage mich, ob es eine bessere Option gibt.
Was ist der einfachste Weg, einen Index für ein Feld zu erstellen, das bereits in Titan verwendet wurde?
Vielen Dank für Ihre Antwort - leider scheint das nicht zu diesem Zweck zu tun. Ich denke 'g.V.each {g.removeVertex (it)}' ist grob äquivalent zu 'g.V.remove()' ([siehe related] (http://stackoverflow.com/a/17250723/2172530)). Als ich Ihre alternative Methode zum Entfernen von Scheitelpunkten ausprobierte, hatte Titan die gleiche Beschwerde: 'Ein Index zu einem bereits vorhandenen Eigenschaftsschlüssel kann nicht hinzugefügt werden: my_key'. – bcm360
Haben Sie die Transaktion nach dem Entfernen festgeschrieben? – Pradatta
Ich tat, kein Unterschied: 'Gremlin> g.V.each {g.removeVertex (it)}; g.commit(); g.createKeyIndex ("my_key", Vertex.class); Ein Index zu einem bereits vorhandenen Eigenschaftsschlüssel kann nicht hinzugefügt werden: my_key' – bcm360