elasticsearch,titan,Properties,Indexing,elasticsearch,Titan" /> elasticsearch,titan,Properties,Indexing,elasticsearch,Titan" />

Properties Titan/ES:由于持久性异常,无法提交事务

Properties Titan/ES:由于持久性异常,无法提交事务,properties,indexing,elasticsearch,titan,Properties,Indexing,elasticsearch,Titan,我在尝试使用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”、“ela

我在尝试使用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文件加载顶点和边:

    新文件(“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
    
    对这个错误的研究表明,这是一个资源锁定、并发属性设置或唯一属性的问题,但是我没有在代码中使用这些。当我手动键入它们时,它的工作方式似乎不寻常,但当我在脚本中运行它时,它会中断-在第2部分中设置属性索引之前,脚本是否可能会超越自身并尝试为属性赋值(步骤3)

    谢谢,
    Adam

    您能验证您没有任何无效值吗?我还没有测试它,但是我怀疑当你尝试插入空字符串时Titan/ES也会抛出这个异常。嗨,Daniel,谢谢你的回复。我注释掉了设置实际属性的代码,但仍然得到了相同的错误,所以不幸的是,我认为这不是问题所在。只是添加-我在Gremlin控制台中运行了脚本,发现它在以下行中抛出了此错误:v=bg.addVertex(value)。堆栈跟踪告诉我“没有为属性指定类型”,这似乎是ElasticSearch功能的错误。也许我用错了这个命令?我并没有改变这一行,当我没有特定的属性键时,它工作得很好。好吧,我缩小了范围,它变得更加混乱。addVertex(value)循环通过一个包含IP地址的csv文件,通过打印输出,它似乎从文件中加载了前1000个,然后出错。无论我如何编辑列表,IP it错误总是在第1001行。“bg”听起来像是在使用BatchGraph,BatchGraph似乎在1000个条目之后提交批处理。真正奇怪的是,您在没有设置任何属性的情况下得到相同的错误。你能在某个地方分享完整的代码吗,也许是要点?