一、Neo4j和图数据库简介

neo4j是基于Java语言编写图形数据库。图是一组节点和连接这些节点的关系。图形数据库也被称为图形数据库管理系统或GDBMS。
Neo4j的是一种流行的图形数据库。 其他的图形数据库是Oracle NoSQL数据库,OrientDB,HypherGraphDB,GraphBase,InfiniteGraph,AllegroGraph。

Neo4j图形数据库的主要构建块是:

  • 节点:是图表的基本单位。 它包含具有键值对的属性
  • 关系:连接两个节点,具有方向:单向和双向。每个关系包含“开始节点”或“从节点”和“到节点”或“结束节点”。关系也可以包含属性作为键值对。
  • 属性:是用于描述图节点和关系的键值对。Key =值,其中Key是一个字符串,值可以通过使用任何Neo4j数据类型来表示
  • 标签:将节点分组为集合。将一个公共名称与一组节点或关系相关联。 节点或关系可以包含一个或多个标签。 我们可以为现有节点或关系创建新标签。 我们可以从现有节点或关系中删除现有标签。
  • 数据浏览器:用于执行CQL命令并查看输出输出。

二、Neo4j安装

本人的环境是win10。因此下文介绍在win10上的安装。

2.1 安装Java JDK

neo4j是用Java语言编写的图形数据库,运行时需要启动JVM进程,因此,需安装JAVA SE的JDK。JAVA SE JDK下载
安装好后cmd输入java -version检查是否安装好。

2.2 下载安装Neo4j

从官网下载最新版 Neo4j 社区版(Community)。需要注册后才能下载
下载好后解压到自己想放的盘里,例如:E:\Program Files (x86)\neo4j-community-3.4.0

Neo4j应用程序有如下主要的目录结构:

  • bin目录:用于存储Neo4j的可执行程序;
  • conf目录:用于控制Neo4j启动的配置文件;
  • data目录:用于存储核心数据库文件;
  • plugins目录:用于存储Neo4j的插件;

2.3 创建系统环境变量

在计算机-属性中创建系统环境变量NEO4J_HOME,并把主目录(E:\Program Files (x86)\neo4j-community-3.4.0)设置为变量值。

NEO4J_HOME=E:\Program Files (x86)\neo4j-community-3.4.0

再在path中添加%NEO4J_HOME%\bin

2.4 Neo4j的启动和停止

法一:通过控制台启动Neo4j程序

CMD管理员身份运行(一定要以管理员身份进入CMD,否则会出现警告。警告: This command does not appear to be running with administrative rights. Some commands may fail e.g. Start/Stop)
输入:neo4j.bat console

法二:把Neo4j安装为服务

安装和卸载服务:

neo4j install-service
neo4j uninstall-service

启动服务,停止服务,重启服务和查询服务的状态:

neo4j start
neo4j stop
neo4j restart
neo4j status

(注意此处可能会出现问题,参考https://blog.csdn.net/weixin_42103075/article/details/80473283,如无法解决,看看是否以管理员方式运行cmd)
在浏览器中打开http://localhost:7474 默认跳转到 http://localhost:7474/browser,出现Neo4j界面,则安装成功。
初始密码:neo4j 进去之后可以修改密码

如果,neo4j stop不能停止neo4j,
kill -s 9 强制杀掉进程。

2.5 切换数据库

每次启动neo4j,它只能读取一个数据库。默认情况下的Graph.db数据库。

法一:修改配置文件

使用Neo3.x创建新数据库而不删除现有数据库,所以只需在$NEO4J_HOME\conf的目录编辑neo4j.conf。搜寻dbms.active_database=,其默认值应为graph.db。用其他名称替换它,然后再次启动neo4j。现在,将在该目录名下创建一个新数据库。若要切换回以前的db,请重复这些步骤,只需将新值替换为graph.db在配置文件中。
注意:如果在neo4j启动的时候修改了配置文件,则需要重新启动一次,浏览器页面才会更新。

法二:建立软连接

详见https://blog.csdn.net/programmer_at/article/details/69570987,为linux下的方法。

三、Neo4j的CQL操作

CQL代表Cypher查询语言。 像Oracle数据库具有查询语言SQL,Neo4j具有CQL作为查询语言。

运行Neo4j之后,在软件窗口可以选择数据库创建位置,之后Neo4j就自动为我们创建好了数据库。

  • 创建唯一性约束,同时具有索引效果,类似关系型数据库中的主键。注意,这只能在数据库中还未插入数据时设置。

    CREATE CONSTRAINT ON (a:Person) ASSERT a.name IS UNIQUE;

  • 创建索引。

    CREATE INDEX ON :Person(name);

  • 查看所有的节点数和边数

    MATCH (n) RETURN count(n);
    MATCH ()-->() RETURN count(*);

  • 插入节点。插入一个Person类别的节点,且这个节点有一个属性name,属性值为Andres

    CREATE (n:Person { name : 'Andres'});

  • 插入边。插入一条a到b的有向边,且边的类别为Follow

    MATCH (a:Person),(b:Person)
    WHERE a.name = 'Node A' AND b.name = 'Node B'
    CREATE (a)-[r:Follow]->(b);

  • 更新节点。更新一个Person类别的节点,设置新的name。

    MATCH (n:Person { name: 'Andres' })
    SET n.name = 'Taylor';

  • 删除节点和与其相连的边。Neo4j中如果一个节点有边相连,是不能单单删除这个节点的。

    MATCH (n:Person { name:'Andres' })
    DETACH DELETE n;

  • 删除边。

    MATCH (a:Person)-[r:Follow]->(b:Person)
    WHERE a.name = 'Andres' AND b.name = 'Taylor'
    DELETE r;
    

作为图形数据库,有一些独有的查询语句

  • 最短路径。

    MATCH (ms:Person { name:'Andres' }),(cs:Person { name:'Taylor' }), p = shortestPath((ms)-[r:Follow]-(cs)) RETURN p;
    
  • 查询两个节点之间的关系。

    MATCH (a:Person { name:'Andres' })-[r]->(b:Person { name:'Taylor' })
    RETURN type( r);
    
  • 查询一个节点的所有Follower。

    MATCH (:Person { name:'Taylor' })-[r:Follow]->(Person)
    RETURN Person.name;
    
  • 清空所有数据(删除所有节点和关系)

    MATCH (n)
    OPTIONAL MATCH (n)-[r]-()
    DELETE n,r
    

    上面的方式会将node和relations都删除,但这种删除方式仍会有一些信息未清空(如Property keys),在linux下彻底删除数据库使用如下方式:

    >bin/neo4j stop
    >rm -rf data/databases/graph.db
    >bin/neo4j start
    

    Windows中直接删除data/databases/graph.db或其他指定db中的全部数据即可。

其他参见Neo4j用户手册:Neo4j Documentation

四、导入csv文件

首先从MySQL数据库导出csv文件,复制到import文件夹E:\Program Files (x86)\neo4j-community-3.4.0\import里,然后执行下列语句:

//导入节点 电影类型  == 注意类型转换
LOAD CSV WITH HEADERS  FROM "file:///genre.csv" AS line
MERGE (p:Genre{gid:toInteger(line.gid),name:line.gname})//导入节点 演员信息
LOAD CSV WITH HEADERS FROM 'file:///person.csv' AS line
MERGE (p:Person { pid:toInteger(line.pid),birth:line.birth,
death:line.death,name:line.name,
biography:line.biography,
birthplace:line.birthplace})// 导入节点 电影信息
LOAD CSV WITH HEADERS  FROM "file:///movie.csv" AS line
MERGE (p:Movie{mid:toInteger(line.mid),title:line.title,introduction:line.introduction,
rating:toFloat(line.rating),releasedate:line.releasedate})// 导入关系 actedin  电影是谁参演的 1对多
LOAD CSV WITH HEADERS FROM "file:///person_to_movie.csv" AS line
match (from:Person{pid:toInteger(line.pid)}),(to:Movie{mid:toInteger(line.mid)})
merge (from)-[r:actedin{pid:toInteger(line.pid),mid:toInteger(line.mid)}]->(to)//导入关系  电影是什么类型 == 1对多
LOAD CSV WITH HEADERS FROM "file:///movie_to_genre.csv" AS line
match (from:Movie{mid:toInteger(line.mid)}),(to:Genre{gid:toInteger(line.gid)})
merge (from)-[r:is{mid:toInteger(line.mid),gid:toInteger(line.gid)}]->(to)

参考网址:
W3Cschool-neo4j教程(推荐)
Neo4j官方教程(推荐)
Neo4j概述
win10 下安装 neo4j
Neo4j安装&入门&一些优缺点
基于电影知识图谱的智能问答系统(二) – Neo4j导入CSV文件(系列文章,很全,java+spark)

Neo4j安装及简单使用相关推荐

  1. 用Python中的py2neo库操作neo4j,搭建简单关联图谱—基于家有儿女中的人物关系

         我第一次建立关联图谱用的是R语言,通过写代码帮公安挖掘团伙犯罪,并用图形展示团伙之间的关联关系.如有需要请关注 "阿黎逸阳的代码" 公众号的后续文章,会手把手教大家用R搭 ...

  2. neo4j安装_Neo4J OGM与Quarkus

    neo4j安装 在下面的视频中,我展示了一个使用Neo4J数据库和Neo4J OGM的Quarkus应用程序示例. 看一下GitHub上的示例项目. 我为咖啡豆创建了一个示例域,其中包含我们可以查询和 ...

  3. docker-compose的安装与简单使用

    docker-compose的安装与简单使用 docker-compose简介 屁话不这么多,直接开干 docker-compose安装步骤 由于docker-compose托管在github上面,所 ...

  4. 内核同步对性能的影响及perf的安装和简单的使用

    更多文章目录:点击这里 GitHub地址:https://github.com/ljrkernel 内核同步对性能的影响及perf的安装和简单的使用 看了一篇关于多线程应用程序性能分析的外文,结合之前 ...

  5. cakephp 安装mysql_CakePHP的安装的简单方法

    在对于CakePHP的作用有了初步认识后,我们可以下载CakePHP来进行一些使用.在安装前,要检查php的版本情况,防止CakePHP框架出现不适配的情况. 对于具体的框架组装,会涉及到依赖库和Co ...

  6. neo4j安装_Neo4J和Enterprise Java的撤消功能

    neo4j安装 我创建了一个示例,说明如何在使用Neo4J数据库的Quarkus应用程序中实现撤消功能. 从用户的角度来看,撤消操作可能看起来并不引人注目,但是一旦您知道需要在数据库端考虑的内容,它就 ...

  7. 怎么进入python官网-Python的安装及简单的使用

    原标题:Python的安装及简单的使用 像我们想要抓住一门好的编程语言,如何开始学习呢?我来简单介绍下python Python特性:语法简单,入门上手快,很多女神也在学习,方便找个编程的妹纸---- ...

  8. 刚安装的python如何使用-Python requests的安装与简单运用

    强烈推荐!requests官方文档已有了中文版,请见http://cn.python-requests.org/zh_CN/latest/ . requests是python的一个HTTP客户端库,跟 ...

  9. python requests的安装与简单运用

    强烈推荐!requests官方文档已有了中文版,请见http://cn.python-requests.org/en/latest/. requests是python的一个HTTP客户端库,跟urll ...

最新文章

  1. 机器对工作、生产力及全球经济的影响
  2. 实现IHttpModule接口获取Session来实现页面访问日志功能。
  3. leetcode - 1049. 最后一块石头的重量 II
  4. 2010浙大878计算机专业基础综合解析
  5. vivado 使用DDS IP方法
  6. UVA 1590 IP Networks
  7. 拓端tecdat|R语言中固定与随机效应Meta分析 - 效率和置信区间覆盖
  8. 计算机与科学a,[第一单元] 计算机与计算机科学-课文A参考译文
  9. Keil代码自动对齐 VS对齐功能
  10. Oracle分析函数汇总(超全)
  11. Java工程师成神之路【转】
  12. 高逼格/高效率办公工具、开发工具、开发插件等各种骚操作汇总 —— [努力更新中...]
  13. android版youtube最新版下载,youtube安卓版
  14. 梦三国解析服务器spl文件头失败解决,梦三国手游|深度解析“伪法师”张角:“不容忽视的战场杀器”...
  15. 软件测试缺陷报告总结
  16. 一份来自28岁老程序员的自白
  17. aps生产计划排产的计划类型
  18. VUE根据url下载文件
  19. Hi3798 openSSH的移植
  20. 基于STM32的HAL库的倒立摆控制(一)PWM输出

热门文章

  1. 【C语言】scanf函数格式控制符
  2. pycocotools报错 if type(resFile) == str or type(resFile) == unicode: NameError: name ‘unicode‘ is
  3. 2023年,最新最权威的上海Java培训机构排行榜出炉!
  4. 智能家居进入人工智能时代 开启智慧家庭生活
  5. Anchor-based和Anchor-free优缺点对比
  6. 通信原理 | 通信的基本概念和通信系统的组成
  7. python实现模仿银行ATM机
  8. 胡喜:从 BASIC 到 basic ,蚂蚁金服技术要解决两个基本的计算问题
  9. Unreal 后期处理材质范例
  10. jquery概要--基础01