Neo4j 的使用说明(一)(基于V3.4.9)

下一篇(二):https://www.cnblogs.com/infoo/p/11947467.html

一、Neo4j简介

Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。

Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。(摘自百度百科)

Neo4j当前有:Enterprise Server,  Community Server

当前的最新稳定版为3.4.9 (2018年10月)

同时也提供了桌面操作管理工具:Neo4j Desktop(需要激活码)

本文从Neo4j的下载,安装,和Cypher简单使用。介绍一下Neo4j的入门

二、Neo4j的安装

       因条件限制以在win10 上安装Community Server 为例

1、官网下载

相应版本https://neo4j.com/download-center/#releases

速度可能会较慢;

(  下载页面提示默认的用户名和密码均为neo4j   )

可到http://we-yun.com/index.php/blog.html 找到网盘地址

可能不会是最新版

2、下载完成后,解压即可

如果为了方便更改dbms.directories.data的值,不建议进行安装环境变量;dbms.directories.data 后面介绍

3、启动neo4j  

在neo4j 的目录下面打开cmd,  输入neo4j.bat console

出现下图则启动成功

最后一行的警告是通过浏览器访问localhost:7474 的输出日志信息,具体的原因尚不清楚,但目前并不影响正常使用

当关闭该cmd 窗口时,neo4j 服务也会关闭;因此可通过下面操作将其安装为服务。

非最新版或非官网下载可能会出现安装失败;

解决方案可参考https://blog.csdn.net/weixin_42103075/article/details/80473283

因此建议从官网下载最新稳定版

卸载服务使用 neo4j uninstall-service

以下相关的服务操作 bin\neo4j start

bin\neo4j stop

bin\neo4j restart

bin\neo4j status

也可使用win10自带的服务管理界面来进行启动等操作

4、通过localhost:7474访问

会出现下面界面(首次会出现登录页面)

5、测试:创建、查询和删除一个节点

创建一个标签为Person的节点,其有属性 name 和age

查询一个节点

删除一个节点

上述仅仅是简单的创建、查询和删除节点的Cypher 语句;

详情请查阅相关的Cypher文档

6、测试:创建、查询和删除关系

1)先创建三个节点:

create(:Person{name:"a"}),(:Person{name:"b"}),(:Person{name:"c"})

2)为其中的两个顶点添加边:

match (n:Person{name:"a"}),(m:Person{name:"b"})  create (n)-[:R{type:"朋友"}]->(m)

或:match(n),(m) where n.name=”a” and m.name=”b” create (n)-[:R{type:"朋友"}]->(m)

其基本思想是先找到要添加边的两个顶点,再为其创建边

上述两种方式是有缺陷的,因为有可能查出来不止一个节点,那么就会为许多匹配的节点都添加边

上图出现了警告

因此一般我们再创建新节点的时候就要创建边

例如:

create (n:Person{name:"d"}),(m:Person{name:"e"})  create (n)-[:R{type:"父子"}]->(m)

或:create (n:Person{name:"f"})-[r:R{type:"朋友"}]->(m:Person{name:"g"})

使用 return 语句,返回创建结果视图

3)删除关系(包含关系的查询)

match (n:Person{name:"f"})-[r:R{type:"朋友"}]->(m:Person{name:"g"}) delete r [该方式已过时不推荐使用]或

match p=(n:Person{name:"d"})-[:R*1..2]->(m:Person{name:"e"})  delete p [推荐使用该语句]

说明:

第二条里面的*1..2 查询的路径长度,最小为1,最大为2的关系为R的路径

在删除关系之前要先查询到该关系;

上述是简单的Cypher实现,当然还有其它写法;

可参考官方文档学习 :

https://neo4j.com/docs/developer-manual/current/cypher/

7、基本的思想

   Cypher 语句是Neo4j图形数据库的查询语言

基本思想需要掌握的是:顶点的表示 (n)

关系(边)的表示 (n)-[r]->(m)

这里的n r m可以看作是变量

详细的语法可参考

https://neo4j.com/docs/developer-manual/current/cypher/syntax/patterns/#cypher-pattern-varlength

Cypher 内容丰富,与SQL 类似,同样包含诸多函数等;基本上能满足各种需求。因时间关系,未能一一学习了解

三、Neo4j的使用方式

  1. 基于浏览器的可视化,使用Cypher语句进行相关操作
  2. 基于Java 等编程语言的API 操作

四、基于Neo4j Native Java API 的应用介绍

       相关代码放在https://github.com/infoo/Neo4j

1、使用Java Api 进行相关的增删改查操作

若无可视化需求,可以在不安装neo4j server 的情况下使用Neo4j,只需要导入Neo4j的jar包即可

<dependency>
    <groupId>org.neo4j</groupId>
    <artifactId>neo4j</artifactId>
    <version>3.4.9</version>
   </dependency>

2、使用Java Api 执行 Cypher语句进行相关的增删改查操作

Neo4j 学习笔记(-)的更多相关文章

  1. Neo4j学习笔记(1)——使用API编写一个Hello World程序

    项目的创建及配置 因为Neo4j依赖的jar包比较多,所以推荐使用Maven来管理. 首先创建一个Maven Project,添加依赖: <dependency> <groupId& ...

  2. Neo4j学习笔记(1)——使用Java API实现简单的增删改查

    阅读目录 项目的创建及配置 使用嵌入式数据库 创建节点和关系 查询及更新 删除关系和节点 完整代码 参考资料 回到顶部 项目的创建及配置 因为Neo4j依赖的jar包比较多,所以推荐使用Maven来管 ...

  3. Neo4j学习笔记(2)——数据索引

    和关系数据库一样,Neo4j同样可以创建索引来加快查找速度. 在关系数据库中创建索引需要索引字段和指向记录的指针,通过索引可以快速查找到表中的行. 在Neo4j中,其索引是通过属性来创建,便于快速查找 ...

  4. neo4j 学习笔记

    1.参考 https://blog.csdn.net/appleyk/article/category/7408344 系列文章 (不支持 spring boo 2.0 以下的,入门可做参考) 2.底 ...

  5. Neo4j学习笔记

    1. 环境搭建 正好最近同学有一台阿里云服务器借我玩,就尝试着在服务器上搭了Neo4j. 环境:CentOS Linux release 7.4.1708 (Core) 安装Java 安装Neo4j需 ...

  6. 暑假学习笔记(一)——初识Neo4j和APICloud入门

    暑假学习笔记(一)--初识Neo4j和APICloud入门 20180719笔记 1.Neo4j 接了学姐的系统测试报告任务,感觉工作很繁重,但是自己却每天挥霍时光.9月份就要提交系统测试报告了,但是 ...

  7. mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)

    最后更新时间:2017-07-13 11:10:49 原始文章链接:http://www.lovebxm.com/2017/07/13/mongodb_primer/ MongoDB - 简介 官网: ...

  8. spring学习笔记(一) Spring概述

    博主Spring学习笔记整理大部分内容来自Spring实战(第四版)这本书.  强烈建议新手购入或者需要电子书的留言. 在学习Spring之前,我们要了解这么几个问题:什么是Spring?Spring ...

  9. Redis——入门学习笔记

    Redis学习 说到前面:这篇笔记只是我作为一个Redis新手,从0到认知的一个过程.后续会持续深入学习. 学习初衷和计划 学习Redis,因为这是热门技术,必须掌握的技术,别人都会我不会.就这一点就 ...

随机推荐

  1. call_user_func的使用

    <?php function demo01($a) { echo $a; } call_user_func("demo01", "hello world" ...

  2. MYSQL 之 JDBC(九):增删改查(七)DAO的补充和重构

    DAO重构后的代码 package com.litian.jdbc; import org.apache.commons.beanutils.BeanUtils; import java.sql.*; ...

  3. EM算法的收敛性

    https://blog.csdn.net/kevinoop/article/details/80522477

  4. SonarQube+Jenkins+Cppcheck实现C++代码扫描

    背景:公司部分项目是由C++进行开发,因此对此有需求. sonarqube:docker化安装(alpine系统),版本8.3.1 (build 34397) jenkins:docker化安装,版本 ...

  5. 问题:win10缺少一个或多个网络协议

    国庆回家,家里电脑连不上网了,诊断给出的结果是“缺少一个或多个网络协议” 网上这类问题提问的不少,回答的方法也是各种各样,一个一个试下来,发现这个方法是可行的. 1.打开设置--网络和Internet ...

  6. 从对象到类,Java中需要知道的这些东西

    1. 对象的诞生   在平时的开发中,我们使用对象的时候,都是直接new一个临时变量然后进行各种逻辑赋值然后返回,但是你有没有想过一个对象在创建的过程中经历了什么呢,为什么创建时静态变量就已经赋完值了 ...

  7. 虚拟DOM Vitural DOM Tree

      提起Virtual DOM,总是给人一种高深莫测的感觉,大家都知道它比DOM快.那么Virtual DOM到底是何方神圣呢?在深入理解Virtual DOM之前,先让我们回顾一下DOM. 一.什么 ...

  8. python学完可以做什么?Python就业方向最全面的解析

    乔布斯说过:“每一个人都应该学习如何编程,因为编程会教会你如何思考.”下一个时代是人机交互的时代,学习编程不是要让你成为程序员,而让你理解这个时代. 点击免费领取:全网最全python学习导图+14张 ...

  9. 谷歌浏览器又隐藏的HTTPS和WWW前缀

    谷歌工程师 Emily Schechter 曾在 Chromium 反馈页面中提到:Chrome 团队一直将简易性.可用性.安全性作为衡量 UI 的标准.为了让 URL 能更好地被用户理解.移除那些容 ...

  10. DirectX11 With Windows SDK--35 粒子系统

    前言 在这一章中,我们主要关注的是如何模拟一系列粒子,并控制它们运动.这些粒子的行为都是类似的,但它们也带有一定的随机性.这一堆粒子的几何我们叫它为粒子系统,它可以被用于模拟一些比较现象,如:火焰.雨 ...