Neo4j 如何使用使用Cypher创建的现有架构索引批量导入关系?
我有一个由neo4j 2.1.0-M02托管的现有图形数据库。数据是使用BatchInserter创建的,但没有任何索引。不久之后,我通过以下操作添加了使用Cypher的索引:Neo4j 如何使用使用Cypher创建的现有架构索引批量导入关系?,neo4j,batch-processing,Neo4j,Batch Processing,我有一个由neo4j 2.1.0-M02托管的现有图形数据库。数据是使用BatchInserter创建的,但没有任何索引。不久之后,我通过以下操作添加了使用Cypher的索引: CREATE INDEX ON :MyLabel(myId) 注意:我最初的帖子将下面提到的每个API链接到了相应的neo4j在线文档,但我不能发布超过两个链接,因为我是一个新用户。可在此处找到以下所有类和方法: 现在,我想从外部源导入更多的关系。所有传入的关系数据都包含对现有节点myId的引用。BatchInsert
CREATE INDEX ON :MyLabel(myId)
注意:我最初的帖子将下面提到的每个API链接到了相应的neo4j在线文档,但我不能发布超过两个链接,因为我是一个新用户。可在此处找到以下所有类和方法:
现在,我想从外部源导入更多的关系。所有传入的关系数据都包含对现有节点myId的引用。BatchInserter似乎又是一种方法,但createRelationship方法需要节点ID
我需要将传入的myid转换为数据库的节点id,并且我希望利用前面创建的索引。看起来我需要使用BatchInserterIndex,它是使用BatchInserterIndex提供程序提供的。我能找到的唯一BatchInserterIndexProvider是LuceneBatchInserterIndexProvider,但它的nodeIndex方法需要一个“名称”
这就是我被困的地方。我给它取什么名字?我以前的Cypher“createindex ON”语句没有显示名称,在shell中执行“:schema”命令时也没有看到名称。这是整个输出:
Indexes
ON :MyLabel(myId) ONLINE
No constraints
如何使用现有架构索引批量导入?文字字符串“:MyLabel(myId)”是我应该传入的名称吗?我缺少的是不同的课程或策略吗
我可以在网上找到的所有示例要么在同一次运行中初始化了数据和索引,要么使用代码创建了索引,并使用了稍后可以使用的名称。不幸的是,您无法将批处理插入器与架构索引一起使用(目前) 您是否使用普通批处理插入器API 那么我推荐以下几点 当您开始批量插入过程时:迭代db的所有节点,将它们的节点id和
myId
放入hashmap(或数组)中,并使用它们查找用于插入关系的节点id