我在使用ElasticSearch尝试在Titan中创建和使用索引类型时遇到了麻烦。我正在使用Titan Server 0.4.0并且有一个groovy脚本执行以下操作:
设置配置:
config.setProperty( “storage.backend”, “卡桑德拉”) config.setProperty( “storage.hostname”, “127.0.0.1”)
config.setProperty( “storage.index.elastic.backend”, “elasticsearch”) config.setProperty( “storage.index.elastic.directory”, “分贝/ ES”) config.setProperty( “storage.index.elastic.client只”, “假”) config.setProperty( “storage.index.elastic.local模式”, “真”)
创建顶点和边缘属性:
g.makeKey( “property1”)。的数据类型( “类型”)。索引( “弹性的”,Vertex.class)。使() g.makeKey( “property2”)。的数据类型( “类型”)。索引( “弹性的”,Vertex.class)。使()
从单独的CSV文件加载顶点和边:
新文件(“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部分?
谢谢, 亚当