安装neo4j
服务
版本:1.0.0
一、 安装包方式安装
-
解压此安装包
sudo tar xf neo4j-enterprise-3.5.4-unix.tar.gz
-
修改配置文件
cd neo4j-enterprise-3.5.4/conf vi neo4j.conf # apoc导出配置 apoc.export.file.enabled=true dbms.directories.import=import #去掉此行的注释 使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-5.7 --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 \ -v /home/fanlinfeng/neo4j/5.7.0-enterprise/plugins:/var/lib/neo4j/plugins \ -v /home/fanlinfeng/neo4j/5.7.0-enterprise/logs:/var/lib/neo4j/logs \ --env NEO4J_PLUGINS='["graph-data-science"]' \ --env=NEO4J_ACCEPT_LICENSE_AGREEMENT=yes \ neo4j:5.7.0-enterprise #4.1 docker run -it -d --name neo4j-flf-4.1 --publish=6474:7474 --publish=6687:7687 \ -v /home/fanlinfeng/neo4j/4.1.0-enterprise/import:/var/lib/neo4j/import \ -v /home/fanlinfeng/neo4j/4.1.0-enterprise/data:/var/lib/neo4j/data \ -v /home/fanlinfeng/neo4j/4.1.0-enterprise/conf:/var/lib/neo4j/conf \ -v /home/fanlinfeng/neo4j/4.1.0-enterprise/plugins:/var/lib/neo4j/plugins \ -v /home/fanlinfeng/neo4j/4.1.0-enterprise/logs:/var/lib/neo4j/logs \ --env=NEO4J_ACCEPT_LICENSE_AGREEMENT=yes \ neo4j:4.1.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' bin/neo4j-admin import --database Twitter --id-type=ACTUAL --nodes=person=import/twitter2010/vertex.csv --relationships=knows=import/twitter2010/edge.csv --delimiter='\t' #4.1 bin/neo4j-admin import --database 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="|" # 5.7 bin/neo4j-admin database import full demo1 --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" # 禁止类型转换 --normalize-types=false # 类型支持 https://neo4j.com/docs/operations-manual/current/tools/neo4j-admin/neo4j-admin-import/#import-tool-header-format-properties #导入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'
解决办法: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 dbms.memory.pagecache.warmup.enable=true
-
重启服务,执行
CALL gds.list()
、RETURN gds.version();
无报错 -
执行算法前将图加入内存
# 执行如下语句
CALL gds.graph.create(
'my-native-graph',
'Person',
'LIKES'
)
YIELD graphName, nodeCount, relationshipCount, createMillis;
#2.x算法包 ,区别:https://neo4j.com/docs/graph-data-science/current/migration-gds-1-to-gds-2/migration-graph-projection/
CALL gds.graph.project(
'smallschool',
['student','teacher'],
['classmate', 'taught', 'teach', 'workmate']);
#读全图
CALL gds.graph.project("sf10", "*", "*")
# 参数注释
'my-native-graph':图名称
'Person':点名称
'LIKES':边名称
-
执行算法前将图加入内存
# 执行如下语句 CALL gds.graph.create( 'my-native-graph', 'Person', 'LIKES' ) YIELD graphName, nodeCount, relationshipCount, createMillis; #2.x算法包 ,区别:https://neo4j.com/docs/graph-data-science/current/migration-gds-1-to-gds-2/migration-graph-projection/ CALL gds.graph.project( 'smallschool', ['student','teacher'], ['classmate', 'taught', 'teach', 'workmate']); #读全图 CALL gds.graph.project("sf10", "*", "*") # 参数注释 'my-native-graph':图名称 'Person':点名称 'LIKES':边名称
APOC
- 下载:https://github.com/neo4j/apoc/releases
- 放到
plugins
目录下 - 重启