Tôi đang sử dụng Titan Server (Cassandra) v 0.3.1. Tôi muốn tạo một chỉ mục trên một khóa/thuộc tính đỉnh mà tôi đã bắt đầu sử dụng. Tuy nhiên, trong documentation của họ, Titan giải thích rằng:Tạo chỉ mục trên thuộc tính đỉnh đã tồn tại trong Titan (Cassandra)?
To index vertices by key, the respective key index must be created before the key is first used in a vertex property.
Nếu tôi cố gắng tạo ra một chỉ mục trên một lĩnh vực đã tồn tại, tôi thấy một lỗi như mong đợi:
gremlin> g.createKeyIndex("my_key",Vertex.class)
Cannot add an index to an already existing property key: my_key
Tuy nhiên, ngay cả khi tôi cố gắng để xóa ra khỏi đồ thị bằng cách loại bỏ tất cả các đỉnh & cạnh, tôi thấy các lỗi tương tự:
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
Vì vậy, có vẻ như my_key
vẫn tồn tại trong t ông lưu trữ dữ liệu cơ bản ngay cả sau khi tất cả các yếu tố đồ thị được loại bỏ. Điều này phù hợp với các tài liệu (mặc dù các yếu tố đã bị xóa thuộc tính đã được 'sử dụng lần đầu tiên'), nhưng dường như đáng để quay.
Bước tiếp theo của tôi là sẽ tạo lại một kho dữ liệu Cassandra hoàn toàn mới, nhưng tôi tự hỏi nếu có một lựa chọn tốt hơn.
Cách dễ nhất để tạo chỉ mục trên trường đã được sử dụng trong Titan là gì?
Cảm ơn câu trả lời của bạn-- thật không may, điều đó dường như không làm điều này. Tôi nghĩ 'g.V.each {g.removeVertex (it)}' tương đương với 'g.V.remove()' ([xem liên quan] (http://stackoverflow.com/a/17250723/2172530)). Khi tôi thử phương pháp thay thế của bạn để loại bỏ các đỉnh, Titan có cùng khiếu nại: 'Không thể thêm chỉ mục vào khóa thuộc tính đã tồn tại: my_key'. – bcm360
Bạn đã cam kết giao dịch sau khi xóa? – Pradatta
Tôi đã làm, không có sự khác biệt: 'gremlin> g.V.each {g.removeVertex (it)}; g.commit(); g.createKeyIndex ("my_key", Vertex.class); Không thể thêm chỉ mục vào khóa thuộc tính đã có: my_key' – bcm360