安装neo4j
服务
版本:1.0.1
一、 安装包方式安装
-
解压此安装包
sudo tar xf neo4j-enterprise-3.5.4-unix.tar.gz
-
修改配置文件
cd neo4j-enterprise-3.5.4/conf vi neo4j.conf #去掉此行的注释 使7474页面可以访问 dbms.connectors.default_listen_address=0.0.0.0 #去掉此行的注释 改为false代表可以免密连接 dbms.security.auth_enabled=false
-
进入
bin
目录,启动服务cd neo4j-enterprise-3.5.4/bin ./neo4j start
-
查看服务是否成功启动
#在 bin 目录下执行 ./neo4j status #输出Neo4j is running at pid 28807 代表启动成功(pid是随机的)
二、 在docker
中安装
-
从
docker
中拉取neo4j
容器docker pull neo4j:3.5.1 docker pull neo4j:5.7.0-enterprise #将镜像保存到本地 docker save 镜像ID > 目录/文件名.tar #将安装包加载成镜像 docker load < 目录/文件名.tar #修改镜像的名字 docker tag 镜像ID 名字:latest
-
创建两个文件夹
sudo mkdir data sudo mkdir import #用于挂载neo4j容器中的这两个目录 data目录权限改为 777 sudo chmod -R 777 data
-
启动容器
#1、先创建两个目录 一个data 用来挂载数据库文件,一个import 用来存放导入的csv文件 sudo docker run -it -d --name neo4j --publish=7474:7474 --publish=7687:7687 -v $HOME/neo4j/import:/import -v $HOME/neo4j/data:/data neo4j:3.5.1 #启动 neo4j 容器 sudo docker run -d --name neo4j -p 7474:7474 -p 7687:7687 --env=NEO4J_ACCEPT_LICENSE_AGREEMENT=yes neo4j:3.5.1 # 5.7.0版本用docker启动 docker run -it -d --name neo4j-flf --publish=7474:7474 --publish=7687:7687 -v /home/fanlinfeng/neo4j/5.7.0-enterprise/import:/var/lib/neo4j/import -v /home/fanlinfeng/neo4j/5.7.0-enterprise/data:/var/lib/neo4j/data -v /home/fanlinfeng/neo4j/5.7.0-enterprise/conf:/var/lib/neo4j/conf --env=NEO4J_ACCEPT_LICENSE_AGREEMENT=yes neo4j:5.7.0-enterprise #停止服务 neo4j 为容器名称或容器id docker stop neo4j #重启服务 docker restart neo4j
-
导入数据
#1、将数据放入docker容器中 sudo docker cp /data12/flf/14y/e_header.csv neo4j:/import/ #2、进入容器 docker exec -it neo4j bash #3、执行命令 bin/neo4j-admin import 离线导入数据 neo4j-admin import --database=14y.db --nodes "/import/v_header.csv,/import/vertex.csv" --relationships "/import/e_header.csv,/import/edge.csv" --delimiter='\t' --multiline-fields=true ./neo4j-admin import -database 1400w.db -nodes: ../import/1400w/Vertex_个人.csv -relationships: ../import/1400w/Edge_个人-个人-关注.csv #命令变动 4.X企业版变更为 ./neo4j-admin import --database Graph500.db --id-type=ACTUAL --nodes=person=/import/Graph500/vertex.csv --relationships=know=/import/Graph500/edge.csv --delimiter='\t' # 5.7 bin/neo4j-admin database import full smallSchool --id-type=STRING --nodes=teacher="import/school_small/vertex/teacher.csv" --nodes=student="import/school_small/vertex/student.csv" --relationships=teach="import/school_small/relations/teach.csv" --relationships=taught="import/school_small/relations/taught.csv" --relationships=workmate="import/school_small/relations/workmate.csv" --relationships=classmate="import/school_small/relations/classmate.csv" #导入sf图命令 bin/neo4j-admin database import full sf10 --id-type=INTEGER --nodes=person="/var/lib/neo4j/import/snb10/social_network/dynamic/person_0_0.csv" --nodes=comment="/var/lib/neo4j/import/snb10/social_network/dynamic/comment_0_0.csv" --nodes=city="/var/lib/neo4j/import/snb10/social_network/static/city_0_0.csv" --nodes=university="/var/lib/neo4j/import/snb10/social_network/static/university_0_0.csv" --nodes=forum="/var/lib/neo4j/import/snb10/social_network/dynamic/forum_0_0.csv" --nodes=country="/var/lib/neo4j/import/snb10/social_network/static/country_0_0.csv" --nodes=company="/var/lib/neo4j/import/snb10/social_network/static/company_0_0.csv" --nodes=tagclass="/var/lib/neo4j/import/snb10/social_network/static/tagclass_0_0.csv" --nodes=tag="/var/lib/neo4j/import/snb10/social_network/static/tag_0_0.csv" --nodes=post="/var/lib/neo4j/import/snb10/social_network/dynamic/post_0_0.csv" --nodes=continent="/var/lib/neo4j/import/snb10/social_network/static/continent_0_0.csv" --relationships=likes="/var/lib/neo4j/import/snb10/social_network/dynamic/person_likes_comment_0_0.csv" --relationships=likes="/var/lib/neo4j/import/snb10/social_network/dynamic/person_likes_post_0_0.csv" --relationships=knows="/var/lib/neo4j/import/snb10/social_network/dynamic/person_knows_person_0_0.csv" --relationships=hasType="/var/lib/neo4j/import/snb10/social_network/static/tag_hasType_tagclass_0_0.csv" --relationships=hasMember="/var/lib/neo4j/import/snb10/social_network/dynamic/forum_hasMember_person_0_0.csv" --relationships=isLocatedIn="/var/lib/neo4j/import/snb10/social_network/dynamic/comment_isLocatedIn_country_0_0.csv" --relationships=isLocatedIn="/var/lib/neo4j/import/snb10/social_network/dynamic/person_isLocatedIn_city_0_0.csv" --relationships=isLocatedIn="/var/lib/neo4j/import/snb10/social_network/dynamic/post_isLocatedIn_country_0_0.csv" --relationships=isLocatedIn="/var/lib/neo4j/import/snb10/social_network/static/company_isLocatedIn_country_0_0.csv" --relationships=isLocatedIn="/var/lib/neo4j/import/snb10/social_network/static/university_isLocatedIn_city_0_0.csv" --relationships=hasModerator="/var/lib/neo4j/import/snb10/social_network/dynamic/forum_hasModerator_person_0_0.csv" --relationships=replyOf="/var/lib/neo4j/import/snb10/social_network/dynamic/comment_replyOf_comment_0_0.csv" --relationships=replyOf="/var/lib/neo4j/import/snb10/social_network/dynamic/comment_replyOf_post_0_0.csv" --relationships=hasCreator="/var/lib/neo4j/import/snb10/social_network/dynamic/comment_hasCreator_person_0_0.csv" --relationships=hasCreator="/var/lib/neo4j/import/snb10/social_network/dynamic/post_hasCreator_person_0_0.csv" --relationships=isSubclassOf="/var/lib/neo4j/import/snb10/social_network/static/tagclass_isSubclassOf_tagclass_0_0.csv" --relationships=workAt="/var/lib/neo4j/import/snb10/social_network/dynamic/person_workAt_company_0_0.csv" --relationships=studyAt="/var/lib/neo4j/import/snb10/social_network/dynamic/person_studyAt_university_0_0.csv" --relationships=isPartOf="/var/lib/neo4j/import/snb10/social_network/static/city_isPartOf_country_0_0.csv" --relationships=isPartOf="/var/lib/neo4j/import/snb10/social_network/static/country_isPartOf_continent_0_0.csv" --relationships=hasInterest="/var/lib/neo4j/import/snb10/social_network/dynamic/person_hasInterest_tag_0_0.csv" --relationships=hasTag="/var/lib/neo4j/import/snb10/social_network/dynamic/comment_hasTag_tag_0_0.csv" --relationships=hasTag="/var/lib/neo4j/import/snb10/social_network/dynamic/forum_hasTag_tag_0_0.csv" --relationships=hasTag="/var/lib/neo4j/import/snb10/social_network/dynamic/post_hasTag_tag_0_0.csv" --relationships=containerOf="/var/lib/neo4j/import/snb10/social_network/dynamic/forum_containerOf_post_0_0.csv" --delimiter="|"
遇到的问题:在导入ldbc-sf数据时,不同类型的点pk有重复
导入报错:
Caused by:Id '0' is defined more than once in group 'global id space'
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ayBagozA-1684748524096)(/Users/linfeng/Library/Application Support/typora-user-images/image-20230517112900269.png)]
解决办法:https://neo4j.com/docs/operations-manual/current/tutorial/neo4j-admin-import/#_id_space
原始数据的表头加上label在ID后,eg:id:ID(person)
三、算法包
-
下载对应版本的算法包
-
放到
plugins
目录下 -
修改配置文件
# 在配置文件中加上 dbms.security.procedures.unrestricted=gds.* echo "dbms.security.procedures.unrestricted=gds.*" >> neo4j.conf
-
重启服务,执行
CALL gds.list()
无报错 -
执行算法前将图加入内存
# 执行如下语句 CALL gds.graph.create( 'my-native-graph', 'Person', 'LIKES' ) YIELD graphName, nodeCount, relationshipCount, createMillis; # 参数注释 'my-native-graph':图名称 'Person':点名称 'LIKES':边名称