【问题标题】:How to batch import relationships using existing schema index created with Cypher?如何使用使用 Cypher 创建的现有模式索引批量导入关系?
【发布时间】:2014-05-06 03:50:40
【问题描述】:

我有一个使用 neo4j 2.1.0-M02 托管的现有图形数据库。数据是使用 BatchInserter 创建的,但没有任何索引。不久之后,我通过这样做使用 Cypher 添加了索引:

CREATE INDEX ON :MyLabel(myId)

注意:我的原始帖子将下面提到的每个 API 都链接到相应的 neo4j 在线文档,但我不能发布超过两个链接,因为我是新用户。下面的所有类和方法都可以在这里找到:http://api.neo4j.org/2.1.0-M02/allclasses-frame.html

现在我想从外部来源导入更多关系。所有传入的关系数据都包含对现有节点的 myId 的引用。 BatchInserter 似乎是又要走的路,但 createRelationship 方法需要节点 ID。

我需要将传入的 myIds 转换为数据库的节点 ID,并且我想利用我之前创建的索引。看起来我需要使用 BatchInserterIndex,它是使用 BatchInserterIndexProvider 提供的。我能找到的唯一 BatchInserterIndexProvider 是 LuceneBatchInserterIndexProvider,但它的 nodeIndex 方法需要一个“名称”。

这就是我卡住的地方。我给它起什么名字?我之前的 Cypher "CREATE INDEX ON" 语句没有显示名称,当我在 shell 中执行 ":schema" 命令时也没有看到名称。这是整个输出:

Indexes
  ON :MyLabel(myId) ONLINE

No constraints

如何使用我现有的架构索引批量导入?文字字符串 ":MyLabel(myId)" 是我应该传入的名称吗?我是否缺少其他课程或策略?

我可以在网上找到的所有示例都在同一运行中初始化数据和索引,或者他们从代码中创建索引,并使用以后可以使用的名称。

【问题讨论】:

    标签: neo4j batch-processing


    【解决方案1】:

    很遗憾,您还不能将批处理插入器与架构索引一起使用。

    您使用普通的批处理插入器 API 吗?

    那么我会推荐以下。

    当您开始批量插入过程时:遍历 db 的所有节点,获取它们的节点 ID 和它们的 myId 将两者放入哈希图(或数组)中,并使用它来查找您的节点 ID关系插入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-22
      • 1970-01-01
      • 1970-01-01
      • 2017-04-02
      相关资源
      最近更新 更多