Neo4j使用
一、删除图
在开发过程中,很多时候需要快(简)速(单)清(粗)除(暴)Neo4j中存在的海量数据节点和关系数据
在这种情况下,delete和detach从性能上都已力不从心。Neo4j官方推荐清库方法,即删除graph.db数据库文件,暴力清空数据库
1. 关闭Neo4j服务器进程
检查服务器进程是否启动,如启动,可通过kill -9或其它方式杀掉服务器进程
2. 删除graph.db数据库文件
找到<NEO4J_HOME>/data/databases/路径(即安装路径和设置的系统环境变量),可以看到graph.db文件夹。删除此文件夹即可
3. 重新启动Neo4j服务器
通过bin目录下执行如下命令启动Neo4j
./neo4j console
二、linux下无浏览器如何重置密码
初次登录neo4j需要重置密码,但是无图形化界面,如何重置?
1)修改conf/neo4j.conf
# Enable a remote shell server which Neo4j Shell clients can log in to.
dbms.shell.enabled=true
# The network interface IP the shell will listen on (use 0.0.0.0 for all interfaces).
dbms.shell.host=127.0.0.1
# The port the shell will listen on, default is 1337.
dbms.shell.port=1337
本地操作的话只要将注释标记删除就可以,需要远程操作则需要修改host
2)重启neo4j
./neo4j start
3)运行./neo4j-shell密令,输入用户名、密码(默认用户名密码均为neo4j)
输入命令CALL dbms.changePassword('你的新密码'); 输入命令退出:exit;
注意:当然有图形化界面的话,修改密码就很方便:
:server change-password
三、py2neo使用
图模型:
我们也可以使用Python连接Neo4j,我们使用pip安装py2neo之后,使用如下:
1)连接数据库
from py2neo import Graph g = Graph(
host="localhost", # neo4j 搭载服务器的ip地址,ifconfig可获取到
http_port=7474, # neo4j 服务器监听的端口号
user="neo4j", # 数据库user name,如果没有更改过,应该是neo4j
password="root") # neo4j数据库第一次登录时需要设置新得密码,我设置为root
建立了连接,我们就可以使用g来操作数据库
2)节点得建立
在图数据库里组成部分其实很简单,节点(Node)、节点的属性(value)、关系(Relation),这也是图数据库最大的特点,举个简单的例子
Alice与Bob为朋友关系,Alice为20岁,Bob为25岁,这里Alice和Bob就是节点,关系为朋友,节点属性就是其对应的年龄,简化成三元组表示为(节点,关系,节点),不过需要注意的是在建立关系前我们需要先建立独立节点
from py2neo import Graph
from py2neo import Node g = Graph(
host="localhost", # neo4j 搭载服务器的ip地址,ifconfig可获取到
http_port=7474, # neo4j 服务器监听的端口号
user="neo4j", # 数据库user name,如果没有更改过,应该是neo4j
password="root") # neo4j数据库第一次登录时需要设置新得密码,我设置为root # 建立节点
node0 = Node('Person' , name = 'Alice')
node1 = Node('Person' , name = 'Bob') node0['age'] = 20
node1['age'] = 25 # 利用之前得连接,进行数据库操作
g.create(node0)
g.create(node1)
前面我已经建立了连接:g,这里Person表示label,在图数据库中我们需要label来表示节点,在后面的图数据库搜索当中就是依靠这个label来进行搜寻的,因此这个label需要好好表示
后面的name其实已经表示这个节点的属性(从上面的图可以看出,节点的属性可以有多个),这里再举一个例子,一本图书叫《飘》,那么建立节点
node = Node('Book' , name = 'Gone with the wind') g.create(node)
# 由于节点属性为图书,因此这里label设置为Book。
# 回到上面的Alice与Bob,age这个表示节点的属性,与name同样表示为节点的属性
3)关系的建立
假设我们已经建立的两种label,如Disease和Check,其中每种标签下面有很多Node,如label Disease下面有个Node叫心血管疾病,label Check下面有个Node叫载脂蛋白A1/载脂蛋白B比值
我们知道心血管疾病需要做这样的检查:载脂蛋白A1/载脂蛋白B比值,所以就希望这两个标签下的该两个Node需要建立关系:
在neo4j命令窗口可以如下操作:
match(p:Disease),(q:Check) where p.name='心血管疾病'and q.name='载脂蛋白A1/载脂蛋白B比值' create (p)-[rel:need_check{name:'诊断检查'}]->(q)
而利用Py2neo的话,操作如下:
start_node = 'Disease'
end_node = 'Check'
p = '心血管疾病'
q = '载脂蛋白A1/载脂蛋白B比'
rel_type = 'need_check'
rel_name = '诊断检查' query = "match(p:%s),(q:%s) where p.name='%s'and q.name='%s' create (p)-[rel:%s{name:'%s'}]->(q)" % (start_node, end_node, p, q, rel_type, rel_name) g.run(query) # query即为:
# match(p:Disease),(q:Check) where p.name='心血管疾病'and q.name='载脂蛋白A1/载脂蛋白B比值' create (p)-[rel:need_check{name:'诊断检查'}]->(q)
我们可以这样理解Label和Node,Label更像是类,而Node更像是类的实列化,即该类的一个对象
4)查询节点
sql = ["MATCH (m:Disease) where m.name = '{0}' return m.name, m.cause".format(i) for i in entities] # 在neo4j命令窗口可以如下执行:
# MATCH (m:Disease) where m.name = '糖尿病' return m.name, m.cause
# 这里假设已经提前创建了Label为Disease的很多疾病实体了
# 关系语句:MATCH (m:Disease)-[r:do_eat]->(n:Food) where m.name = '发烧' return m.name, r.name, n.name
Neo4j使用的更多相关文章
- 图形数据库Neo4J简介
最近我在用图形数据库来完成对一个初创项目的支持.在使用过程中觉得这种图形数据库实际上挺有意思的.因此在这里给大家做一个简单的介绍. NoSQL数据库相信大家都听说过.它们常常可以用来处理传统的关系型数 ...
- neo4j关闭和开启密码访问权限
本例:neo4j-enterprise-2.3.1版本 neo4j默认安装是开启访问密码验证 可以发现,在conf/下的neo4j-server.properties配置文件 # Require (o ...
- neo4j初次使用学习简单操作-cypher语言使用
Neo4j 使用cypher语言进行操作 Cypher语言是在学习Neo4j时用到数据库操作语言(DML),涵盖对图数据的增删改查 neo4j数据库简单除暴理解的概念: Neo4j中不存在表的概念, ...
- Neo4j图数据库管理系统开发笔记之一:Neo4j Java 工具包
1 应用开发概述 基于数据传输效率以及接口自定义等特殊性需求,我们暂时放弃使用Neo4j服务器版本,而是在Neo4j嵌入式版本的基础上进行一些封装性的开发.封装的重点,是解决Neo4j嵌入式版本Emb ...
- infoq - neo4j graph db
My name is Charles Humble and I am here at QCon New York 2014 with Ian Robinson. Ian, can you introd ...
- Neo4j 3.0 存储过程
Neo4j 3.0 提供一个新的功能“存储过程”,该功能并不是Neo4j-Server的扩展,而是可以直接运行的. 在写这篇文章的时候,只能通过预备好的语句去执行 1 CALL package.pro ...
- neo4j中文社区
关于Neo4j中文社区 官网:http://neo4j.com.cn/ Neo4j 社区为国内具影响力的 Neo4j技术社区,致力于 Neo4j 的技术研究. Neo4j 社区由一批热爱 Neo4j ...
- Eclipse下maven使用嵌入式(Embedded)Neo4j创建Hello World项目
Eclipse下maven使用嵌入式(Embedded)Neo4j创建Hello World项目 新建一个maven工程,这里不赘述如何新建maven工程. 添加Neo4j jar到你的工程 有两种方 ...
- Neo4j批量插入(Batch Insertion)
新建一个maven工程,这里不赘述如何新建maven工程. 添加Neo4j jar到你的工程 有两种方式: 上网站官网下载jar包,根据自己的系统下载不同的压缩包,详细过程不描述,请自行搜索其他博客 ...
- 嵌入式(Embedded)Neo4j数据库访问方法
应用中采用嵌入式Neo4j(Embedded Neo4j)数据库,插入数据后不知道如何访问.查询之后知道有Neoclipse这个可视化工具,最新版本是1.9.5.添加目录后报错: 应该是Neoclip ...
随机推荐
- 通过 Azure Pipelines 实现持续集成之docker容器化及自动化部署
通过 Azure Pipelines 实现持续集成之docker容器化及自动化部署 Intro Azure DevOps Pipeline 现在对于公开的项目完全免费,这对于开源项目来讲无疑是个巨大的 ...
- composer包(发布到github上)同步到Packagist
在上一篇文章里面,探讨了如何一步步建立composer包–创建你的一个composer包 创建完成后,我们需要做的就是讲自建的包发布到Packagist上.至于说什么是Packagist,这个就不用我 ...
- EasyUI之DataGird动态组合列
Dojo.ExtJS.Jquery(EasyUI.jQgrid.ligerui.DWZ).还有asp.net中的服务器控件.当然也少不了HTML 标签之table标签了.其中dojo.ExtJS.Jq ...
- 【spring源码分析】IOC容器初始化(十)
前言:前文[spring源码分析]IOC容器初始化(九)中分析了AbstractAutowireCapableBeanFactory#createBeanInstance方法中通过工厂方法创建bean ...
- jeecg字典表—报表配置(popup弹框)
新建字典表 录入字典数据 新建报表配置 新建用于popup的表 字典Code中对应,用户接受popup返回的字段(按顺序写) 结果校验
- IP防护等级简介
IP(INGRESS PROTECTION)防护等级系统是由IEC(INTERNATIONAL ELECTROTECHNICAL COMMISSION)所起草,将电器依其防尘防湿气之特性加以分级 IP ...
- 分布式存储ceph——(3)ceph常用命令
1.查看ceph集群配置信息 1 ceph daemon /var/run/ceph/ceph-mon.$(hostname -s).asok config show 2.在部署节点修改了ceph ...
- nginx部署静态页面
1.创建文件存放的目录: 2.vim nginx.conf 找到这个文件然后进入编辑模式 注:进入到文件后:点击a:可以编辑文件, server_name 127.0.0.1; 写上ip或 ...
- c++使用cmake创建dpdk项目
使用cmake创建dpdk 特别注意的时,链接dpdk库时,一定要使用 -Wl,--whole-archive 和 -Wl,--no-whole-archive 包含所有的静态库,注意,不要链接 li ...
- Centos 使用yum安装MongoDB 4.0
1.配置MongoDB的yum源 创建yum源文件: #cd /etc/yum.repos.d #vim mongodb-org-4.0.repo 添加以下内容:(我们这里使用阿里云的源) [mngo ...