Я использую Titan Server (Cassandra) v 0.3.1. Я хотел бы создать индекс для вершинного ключа/свойства, который я уже начал использовать. Тем не менее, в их documentation, Titan объясняет:Создать индекс по свойству вершины, который уже существует в Titan (Cassandra)?
To index vertices by key, the respective key index must be created before the key is first used in a vertex property.
Если я пытаюсь создать индекс на поле, которое уже существует, я вижу ошибку, как ожидалось:
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?
Спасибо за ваш ответ - к сожалению, это, похоже, не делает этого с этой целью. Я думаю, что 'g.V.each {g.removeVertex (it)}' примерно эквивалентен 'g.V.remove()' ([см. Соответствующий] (http://stackoverflow.com/a/17250723/2172530)). Когда я попробовал альтернативный метод удаления вершин, у Titan была та же жалоба: 'Невозможно добавить индекс к уже существующему ключу свойства: my_key'. – bcm360
Вы совершили транзакцию после удаления? – Pradatta
Я сделал, нет разницы: 'gremlin> g.V.each {g.removeVertex (it)}; g.commit(); g.createKeyIndex ("my_key", Vertex.class); Невозможно добавить индекс уже существующего ключа свойства: my_key' – bcm360