JanusGraph入门案例
1、安装JanusGraph
# 安装ES 下载镜像
docker pull elasticsearch:6.8.13
# 启动容器
docker run -di --name=elasticsearch6813 -p 9200:9200 -p 9300:9300 -v D:\dev\docker\elasticsearch\conf\elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v D:\dev\docker\elasticsearch\data:/usr/share/elasticsearch/data -v D:\dev\docker\elasticsearch\plugins:/usr/share/elasticsearch/plugins elasticsearch:6.8.13
# 下载镜像
docker pull janusgraph/janusgraph:latest
# 启动容器
docker run --privileged=true --name janusgraph-default -d -p 8182:8182 janusgraph/janusgraph:latest
2、修改配置文件
# 把容器中的配置文件拷贝到本地
docker cp janusgraph-default:/opt/janusgraph/conf/janusgraph-berkeleyje-es.properties /opt/janusgraph/conf
# 查询1中es的ip
docker inspect elasticsearch6813
# 找到ipaddress 我的是172.17.0.3
# 修改配置文件
# 使用的db类型
root.storage.backend = berkeleyje
# db存放位置
storage.directory = /tmp/graph
# 表名
storage.berkeleyje.table = sanguo
# 索引类型
index.search.backend = elasticsearch
# 索引主机
index.search.hostname = 172.17.0.3
index.sanguo.hostname = 172.17.0.3:9200
gremlin.graph = org.janusgraph.core.JanusGraphFactory
# 索引名
index.sanguo.index-name = sanguosha
# 索引目录
index.search.directory = /tmp/searchindex
index.search.elasticsearch.client-only = false
index.search.elasticsearch.local-mode = true
3、启动客户端
# 启动客户端
docker run --rm --link janusgraph-default:janusgraph \
-e GREMLIN_REMOTE_HOSTS=janusgraph \
-it janusgraph/janusgraph:latest ./bin/gremlin.sh
# 加载配置文件 gremlin>
graph = JanusGraphFactory.open('/opt/janusgraph/conf/janusgraph-berkeleyje-es-server.properties');
#
gremlin> g = graph.traversal()
# 添加点
liubei = g.addV("person").property('name','刘备').property('age',45);
guanyu = g.addV("person").property('name','关羽').property('age',42);
zhangfei = g.addV("person").property('name','张飞').property('age',40);
lvbu = g.addV("person").property('name','吕布').property('age',38);
shuguo = g.addV("country").property('name','蜀国');
fthj = g.addV("weapon").property('name','方天画戟');
sgj = g.addV("weapon").property('name','双股剑');
qlyyd = g.addV("weapon").property('name','青龙偃月刀');
zbsm = g.addV("weapon").property('name','丈八蛇矛');
# 维护关系
g.addE('brother').from(g.V(liubei)).to(g.V(guanyu));
g.addE('brother').from(g.V(guanyu)).to(g.V(liubei));
g.addE('brother').from(g.V(zhangfei)).to(g.V(guanyu));
g.addE('brother').from(g.V(guanyu)).to(g.V(zhangfei));
g.addE('brother').from(g.V(zhangfei)).to(g.V(liubei));
g.addE('brother').from(g.V(liubei)).to(g.V(zhangfei));
# 维护关系 这里也可以使用g.V(ID)的形式
g.addE('use').from(liubei).to(sgj);
g.addE('use').from(zhangfei).to(zbsm);
g.addE('use').from(guanyu).to(qlyyd);
g.addE('use').from(lvbu).to(fthj);
# 维护关系
g.addE('battled').from(liubei).to(lvbu);
g.addE('battled').from(lvbu).to(liubei);
g.addE('battled').from(zhangfei).to(lvbu);
g.addE('battled').from(lvbu).to(zhangfei);
g.addE('battled').from(guanyu).to(lvbu);
g.addE('battled').from(lvbu).to(guanyu);
# 查看所有点
g.V()
# 查看所有关系
g.E()
# 退出客户端:exit 客户端里的命令都是:xx 例如:help
4、可视化工具查看
# 下载镜像
docker pull fenglex/janusgraph-visualization
# 启动容器
docker run -itd -p 80:8888 fenglex/janusgraph-visualization
#进入可视化页面
http://localhost
配置ID、端口
# web客户端配置的数据库和上面不一样 所以要手执行一下命令 web客户端 这个命令需要一条一条执行
liubei = g.addV("person").property('name','刘备').property('age',45);
guanyu = g.addV("person").property('name','关羽').property('age',42);
zhangfei = g.addV("person").property('name','张飞').property('age',40);
lvbu = g.addV("person").property('name','吕布').property('age',38);
shuguo = g.addV("country").property('name','蜀国');
fthj = g.addV("weapon").property('name','方天画戟');
sgj = g.addV("weapon").property('name','双股剑');
qlyyd = g.addV("weapon").property('name','青龙偃月刀');
zbsm = g.addV("weapon").property('name','丈八蛇矛');
# 维护关系 web客户端由于一条一条执行 所以只能用g.V(id) 不能用变量名
g.addE('brother').from(liubei).to(guanyu);
g.addE('brother').from(guanyu).to(liubei);
g.addE('brother').from(zhangfei).to(guanyu);
g.addE('brother').from(guanyu).to(zhangfei);
g.addE('brother').from(zhangfei).to(liubei);
g.addE('brother').from(liubei).to(zhangfei);
# 维护关系 web客户端由于一条一条执行 所以只能用g.V(id) 不能用变量名
g.addE('use').from(liubei).to(sgj);
g.addE('use').from(zhangfei).to(zbsm);
g.addE('use').from(guanyu).to(qlyyd);
g.addE('use').from(lvbu).to(fthj);
# 维护关系 web客户端由于一条一条执行 所以只能用g.V(id) 不能用变量名
g.addE('battled').from(liubei).to(lvbu);
g.addE('battled').from(lvbu).to(liubei);
g.addE('battled').from(zhangfei).to(lvbu);
g.addE('battled').from(lvbu).to(zhangfei);
g.addE('battled').from(guanyu).to(lvbu);
g.addE('battled').from(lvbu).to(guanyu);
# 查看所有点
g.V()
# 查看所有关系
g.E()
参考:[[全程实测]如何新建一张JanusGraph图?(详)](