Neo4j安装【安装包、docker】两种方式

安装neo4j服务

版本:1.0.0

一、 安装包方式安装

  1. 解压此安装包

    sudo tar xf neo4j-enterprise-3.5.4-unix.tar.gz
    
  2. 修改配置文件

    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
    
    
  3. 进入 bin 目录,启动服务

    cd neo4j-enterprise-3.5.4/bin
    ./neo4j start
    
  4. 查看服务是否成功启动

    #在 bin 目录下执行
    ./neo4j status
    
    #输出Neo4j is running at pid 28807 代表启动成功(pid是随机的)
    

二、 在docker中安装

  1. 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
    
  2. 创建两个文件夹

    sudo mkdir data
    sudo mkdir import
    #用于挂载neo4j容器中的这两个目录    data目录权限改为 777
    sudo chmod -R 777 data
    
  3. 启动容器

    #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
    
  4. 导入数据

    #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)

三、算法包

  1. 下载对应版本的算法包

  2. 放到 plugins 目录下

  3. 修改配置文件

    # 在配置文件中加上
    dbms.security.procedures.unrestricted=gds.*
    
    echo "dbms.security.procedures.unrestricted=gds.*" >> neo4j.conf
    
    dbms.memory.pagecache.warmup.enable=true
    
  4. 重启服务,执行 CALL gds.list()RETURN gds.version();无报错

  5. 执行算法前将图加入内存

# 执行如下语句
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':边名称
  1. 执行算法前将图加入内存

    # 执行如下语句
    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

  1. 下载:https://github.com/neo4j/apoc/releases
  2. 放到 plugins 目录下
  3. 重启
  • 17
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值