Neo4j是什么#
软件安装及常用的配置选项介绍#
下载#
wget https://neo4j.com/artifact.php?name=neo4j-community-3.5.3-unix.tar.gz
解压:#
tar -zxvf neo4j-community-3.5.3-unix.tar.gz
解压后进入指定目录#
drwxr-xr-x 3 187 root 4096 Feb 7 2019 bin drwxr-xr-x 2 187 ssh_keys 4096 Sep 4 15:41 conf drwxr-xr-x 3 187 ssh_keys 4096 Feb 7 2019 data drwxr-xr-x 2 187 ssh_keys 4096 Feb 7 2019 import drwxr-xr-x 2 root root 4096 Sep 4 15:41 lib -rw-r--r-- 1 187 ssh_keys 141211 Feb 7 2019 LICENSES.txt -rw-r--r-- 1 187 ssh_keys 36005 Feb 7 2019 LICENSE.txt drwxr-xr-x 2 187 ssh_keys 4096 Feb 7 2019 logs -rw-r--r-- 1 187 ssh_keys 6546 Feb 7 2019 NOTICE.txt drwxr-xr-x 2 187 ssh_keys 4096 Sep 4 15:41 plugins -rw-r--r-- 1 187 ssh_keys 1596 Feb 7 2019 README.txt drwxr-xr-x 2 187 ssh_keys 4096 Feb 7 2019 run -rw-r--r-- 1 187 ssh_keys 96 Feb 7 2019 UPGRADE.txt
配置环境变量#
vim /etc/profile 追加以下内容 后面的 路径是neo4j的解压路径 export NEO4J_HOME=/home/changwu/neo4j-community-3.5.3 添加path export PATH=$PATH:$NEO4J_HOME/bin
修改neo4j的配置文件,使其启动起来/conf/neo4j.conf
#
分配内存 dbms.memory.heap.initial_size=1024m dbms.memory.heap.max_size=1024m # 修改54行,去掉改行的#,可以远程通过ip访问neo4j数据库 dbms.connectors.default_listen_address=0.0.0.0 # 默认 bolt端口是7687 # 端口可以自定义,别忘了去 安全组中开放这个端口 dbms.connector.bolt.listen_address=:9999 # 默认通过http访问的端口是7474, 开放这个端口,可以在浏览器打开 # HTTP Connector. There can be zero or one HTTP connectors. dbms.connector.http.enabled=true dbms.connector.http.listen_address=:9998
启动命令#
[root@ecs-t6-large-2-linux-20190824103606 bin]# ./neo4j Usage: neo4j { console | start | stop | restart | status | version }
概念名词#
Label#
label 相当于数据库中的表, 比如有一个Label="Person" 代表一类节点
Node#
node 节点, 也叫它定点,每一个节点都代表一个对象, 相当于数据表中的一行数据
节点可以有若干个属性来描述自己
relation#
relation 关系,也叫做边,有类型,带方向
- 有类型:表示节点之间的关系可以有多种, 比如 朋友关系, 上下级关系
- 带方向:表示节点之间的关系可以是单向的, 也可以是双向的, 注意在创建节点的关系时,必须指定方向性,否则会报错,但是在查询时,如果不指定方向,默认会查询双向的关系
id#
每个节点,关系,都有系统自动分配的id,从0开始,全局唯一
如果我们手动创建一个node,然后指定它的id=1, 我们自己指定的id是属性, 与系统默认的id无关
create(Person{ id : '1' } )
通过id函数,可以获取出node的id值
match (n:Person{id:'erzi'}) return id(n)
Index#
如果未来会频繁的根据node的某一个属性查询节点, 考虑为node的这个属性添加一个索引(不需要给index取名字),为了更强的性能
- 创建索引
create index on :Person(id)
- 删除索引
drop index on :Person(id)
- 查询
// where in = < > substring 都会走索引 explain match (n:Person) where n.id=2008 return n
注意点: 如果是给某一个字段创建了索引,那么查询这个字段是会扫描索引然会返回这个node, 但是,如果是给某一个字段创建索引后查询一个label下的全部节点,依然会走全表扫描
创建了索引的属性,自带唯一性的约束
consiraint 唯一性约束#
- 添加唯一约束
create constraint on (a:Person) Assert a.id is unique Assert a.id is unique
- 删除唯一约束
drop constraint on (a:Person) Assert a.id is unique