我有一个包含以下详细信息的数据集:
我使用https://github.com/jexp/batch-import/tree/20批量导入数据到我的机器上的数据库(64位,16核,16 GB RAM)
我正在尝试在Subscriber_ID上索引这些节点,但我不确定我在做什么。
我跑了
start n = node(*) set n:Subscribers
我的理解是这为每个节点创建了一个标签(这是正确的)
接下来我跑了
create index on :Subscribers(SUBSCRIBER_ID)
我认为应该为属性'SUBSCRIBER_ID'上的'Subscribers'标签创建所有节点的索引。 (正确的吗?)
现在我去Neo4j-sh跑了
neo4j-sh (?)$ schema
==> Indexes
==> ON :Subscribers(SU_SUBSCRIBER_ID) ONLINE
==>
==> No constraints
但是,当我运行以下内容时,它表示没有为节点设置索引。
neo4j-sh (?)$ index --indexes
==> Node indexes:
==>
==> Relationship indexes:
我有几个问题
以下是我的数据示例:
Nodes.txt
id SU_SUBSCRIBER_ID CU_FIRST_NAME gender SU_AGE
0 123456 Ann F 56
1 832746 ? UNKNOWN -1
2 546765 Tom UNKNOWN -1
3 768345 Anges F 72
4 267854 Aoibhlinn F 38
rels.csv
start end rel counter
0 3 CONTACTED 2
1 2 CONTACTED 1
1 4 CONTACTED 1
3 2 CONTACTED 2
4 1 CONTACTED 1
答案 0 :(得分:1)
schema
是正确的命令。
Cypher自动为MERGE
和MATCH
使用标签索引。
使用Java Core-API,您可以使用db.findNodesByLabelAndProperty(label,property,value)
除了一个,你做对了。您可以在执行批量导入时在节点上创建标签。
只需在CSV文件中添加l:label
字段,其中包含每个节点的逗号分隔标签列表。如同该分支的自述文件所示。