2013-06-15 11 views
6

私はTitan Server(Cassandra)v 0.3.1を使用しています。私は既に使用し始めている頂点キー/プロパティのインデックスを作成したいと思います。私はすでに存在しているフィールドにインデックスを作成しようとすると、予想通り、私はエラーが表示さ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 

しかし、I場合は、そのdocumentationで、タイタンは、と説明しますすべての頂点&辺を除去することにより、グラフをクリアしようと、私は同じエラーを参照してください。

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で既に使用されているフィールドにインデックスを作成する最も簡単な方法は何ですか?

答えて

3

ポイント新しいカサンドラデータストアにTitanをポイントし、そのプロパティを持つ要素を挿入する前にインデックスを作成します。

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

このグレムリンクエリを試してみてください。

gremlin> g.V.each{g.removeVertex(it)} 

あなたは頂点が削除された場合、それに関連付けられたすべてのエッジが自動的に削除されますので、手動でエッジを削除する必要はありません。すべての頂点を削除するには、反復クエリを使用する必要があります。

グラフが消去されると、新しいKeySpaceは必要ありません。

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

ご回答いただきありがとうございます。残念ながら、これはこの目的のために行われていないようです。私は 'g.V.each {g.removeVertex(it)}'は 'g.V.remove()'([関連参照](http://stackoverflow.com/a/17250723/2172530))とほぼ同じだと思います。別の方法で頂点を削除しようとしたとき、Titanは「既存のプロパティキーにインデックスを追加できません:my_key」という同じ苦情を受けました。 – bcm360

+0

削除後にトランザクションをコミットしましたか? – Pradatta

+0

私は違いはありません: 'gremlin> g.V.each {g.removeVertex(it)}; g.commit(); g.createKeyIndex( "my_key"、Vertex.class); 既存のプロパティキーにインデックスを追加できません:my_key' – bcm360

関連する問題