Używam serwera Titan (Cassandra) v 0.3.1. Chciałbym utworzyć indeks na klucz/właściwość wierzchołków, które już zacząłem używać. Jednak w ich documentation Titan wyjaśnia, że:Utwórz indeks we właściwości wierzchołków, która już istnieje w Tytanie (Cassandra)?
To index vertices by key, the respective key index must be created before the key is first used in a vertex property.
Gdy próbuję utworzyć indeks na polu, który już istnieje, widzę błąd, zgodnie z oczekiwaniami:
gremlin> g.createKeyIndex("my_key",Vertex.class)
Cannot add an index to an already existing property key: my_key
Jednakże, nawet jeśli spróbuj usunąć wykres usuwając wszystkie wierzchołki & brzegi, widzę ten sam błąd:
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
więc wydaje się, że w dalszym ciągu t my_key
z magazynu danych, nawet po usunięciu wszystkich elementów wykresu. Jest to zgodne z dokumentami (mimo że elementy zostały usunięte, właściwość była już "po raz pierwszy użyta"), ale wydawało się warte strzału.
Moim następnym krokiem będzie ponowne stworzenie nowego magazynu danych Cassandra, ale zastanawiam się, czy istnieje lepsza opcja.
Jaki jest najprostszy sposób utworzenia indeksu na polu, które już było używane w programie Titan?
Dzięki za odpowiedź - niestety, nie wydaje się, aby to zrobić w tym celu. Myślę, że 'g.V.each {g.removeVertex (it)} jest mniej więcej równoznaczne z' g.V.remove() '([zobacz powiązane] (http://stackoverflow.com/a/17250723/2172530)). Kiedy próbowałem twojej alternatywnej metody usuwania wierzchołków, Titan miał tę samą skargę: 'Nie można dodać indeksu do już istniejącego klucza własności: my_key'. – bcm360
Czy zatwierdziłeś transakcję po usunięciu? – Pradatta
Zrobiłem, bez różnicy: 'gremlin> g.V.each {g.removeVertex (it)}; g.commit(); g.createKeyIndex ("my_key", Vertex.class); Nie można dodać indeksu do już istniejącego klucza właściwości: my_key' – bcm360