ElasticSearch を使用して Titan でインデックス付きの型を作成して使用しようとすると問題が発生します。私は Titan Server 0.4.0 を使用しており、次のことを行う groovy スクリプトがあります。
構成を設定します。
config.setProperty("storage.backend","cassandra") config.setProperty("storage.hostname","127.0.0.1")
config.setProperty("storage.index.elastic.backend","elasticsearch") config.setProperty("storage.index.elastic.directory","db/es") config.setProperty("storage.index.elastic.client" -only","false") config.setProperty("storage.index.elastic.local-mode","true")
頂点と辺のプロパティを作成します。
g.makeKey("property1").dataType("type").indexed("elastic",Vertex.class).make() g.makeKey("property2").dataType("type").indexed("elastic" ",Vertex.class).make()
別の CSV ファイルから頂点とエッジをロードします。
new File("path-to-csv").each({ line -> (property1,property2) = line.split(",")
v = bg.addVertex(id)
v.setProperty("property1",property1)
v.setProperty("property2",property2) })
ステップ 3 のループを無視し、gremlin コンソールを使用してサンプルの頂点/エッジ/プロパティを追加するだけで、問題なく動作するようです。ただし、これを groovy スクリプト (頂点とエッジの csv ファイルを取得し、データを Titan にロードする) で実行すると、次のエラーが発生します。
javax.script.ScriptException: com.thinkaurelius.titan.core.TitanException: Could not commit transaction due to exception during persistence
このエラーに関する調査は、リソースのロック、同時プロパティ設定、または一意のプロパティに問題があることを示唆していますが、コードではこれらのいずれも使用していません。手動で入力すると機能するのは珍しいようですが、スクリプトで実行すると壊れます-プロパティインデックスを設定する前に、スクリプトがそれ自体を追い越し、プロパティに値を割り当てようとしている可能性があります(手順3)パート2で?
ありがとう、アダム