首先确保电脑中已经安装好了HugeGraph,现在开始安装HugeGraph-Studio实现图的可视化操作。主要需要注意的地方是配置文件的修改。
HugeGraph-Studio Quick Start
1 HugeGraph-Studio概述
HugeGraph-Studio是HugeGraph的前端展示工具,是基于Web的图形化IDE环境。 通过HugeGraph-Studio,用户可以执行Gremlin语句,并及时获得图形化的展示结果。 功能包括:
- 图数据的输入
- 图数据的展示
- 图数据的分析
注意:HugeGraph-Studio需要依赖HugeGraph-Server,在安装和使用HugeGraph-Studio之前,请通过jps命令检查HugeGraphServer服务是否已经启动,如果没有启动,请参考HugeGraph-Server安装配置启动HugeGraphServer。
2 安装和运行HugeGraph-Studio
有两种方式可以获取HugeGraph-Studio:
下载源码包编译安装
下载二进制tar包
2.1 下载二进制tar包
可以从以下地址下载:
HugeGraph-Studio下载 ,可以自己下载上传之后解压,也可以终端下wget直接获取。
$ wget https://github.com/hugegraph/hugegraph-studio/releases/download/v${version}/hugegraph-studio-${version}.tar.gz
# 下载完成后解压缩:
$ tar zxvf hugegraph-studio-${version}.tar.gz
3 启动HugeGraph-Studio
修改配置文件:hugegraph-studio.properties。这里要注意host端口必须都是配置本机的ip(服务器的ip地址),不要使用localhost或者127.0.0.1,否则只能本地访问,外网无法访问。
[root@cdh1 conf]# pwd
/Programe_Files/HugeGraph/hugegraph-studio-0.9.0/conf
[root@cdh1 conf]# ll
total 8
-rw-r--r-- 1 xxli 20 1825 Sep 10 16:08 hugegraph-studio.properties
-rwxr-xr-x 1 xxli 20 1488 May 7 17:23 log4j2.xml
[root@cdh1 conf]# vim hugegraph-studio.properties
# 下面是vim打开之后的部分结果展示:
studio.server.port=8082 # studio提供外部访问的端口
studio.server.host=192.168.60.32
graph.server.host=192.168.60.32
graph.server.port=8080 # 需要和HugeGraph中的配置文件rest-server.properties 端口保持一致,是HugeGraph提供服务的端口。
graph.name=hugegraph
client.timeout=30
@将配置项studio.server.host的值localhost修改成机器名或 IP,这是 HugeGraphStudio 对外提供服务的host,如果只需要本地访问则保持不变即可;
@将配置项studio.server.port的值8088修改成想要的端口,这是 HugeGraphStudio 对外提供服务的port;
@将配置项graph.server.host的值localhost修改成 HugeGraphServer 的host,HugeGraphStudio 通过此项和graph.server.port与 HugeGraphServer 建立连接;
@将配置项graph.server.port的值8080修改成 HugeGraphServer 的port,HugeGraphStudio 通过graph.server.host和此项与 HugeGraphServer 建立连接;
@将配置项graph.name的值hugegraph修改成要连接的 HugeGraphServer 的图名,目前只允许连接一个图。
修改完上述配置后,即可启动 HugeGraphStudio:
$ cd hugegraph-studio-${version}
# pwd= /Programe_Files/HugeGraph/hugegraph-studio-0.9.0
$ bin/hugegraph-studio.sh
注意:如果启动HugeGraphStudio失败,可能设置的端口已经被使用,可以使用别的空闲端口或者将在用的端口停用,然后再试试重新启动。
$ netstat -nlutp # (查看所有在使用的端口)
$ kill 1818 # (停掉使用端口的进程,1818为对应的编号)
接下来,打开浏览器访问 http://192.168.60.32:8082 即可使用HugeGraph-Studio,建图之后,输入g.V()展示结果如下图:
没有建图所以里面是空的:
输入以下建图命令:
// PropertyKey
graph.schema().propertyKey("name").asText().ifNotExist().create()
graph.schema().propertyKey("age").asInt().ifNotExist().create()
graph.schema().propertyKey("addr").asText().ifNotExist().create()
graph.schema().propertyKey("lang").asText().ifNotExist().create()
graph.schema().propertyKey("tag").asText().ifNotExist().create()
graph.schema().propertyKey("weight").asFloat().ifNotExist().create()
// VertexLabel
graph.schema().vertexLabel("person").properties("name", "age", "addr", "weight").useCustomizeStringId().ifNotExist().create()
graph.schema().vertexLabel("software").properties("name", "lang", "tag", "weight").primaryKeys("name").ifNotExist().create()
graph.schema().vertexLabel("language").properties("name", "lang", "weight").primaryKeys("name").ifNotExist().create()
// EdgeLabel
graph.schema().edgeLabel("knows").sourceLabel("person").targetLabel("person").properties("weight").ifNotExist().create()
graph.schema().edgeLabel("created").sourceLabel("person").targetLabel("software").properties("weight").ifNotExist().create()
graph.schema().edgeLabel("contains").sourceLabel("software").targetLabel("software").properties("weight").ifNotExist().create()
graph.schema().edgeLabel("define").sourceLabel("software").targetLabel("language").properties("weight").ifNotExist().create()
graph.schema().edgeLabel("implements").sourceLabel("software").targetLabel("software").properties("weight").ifNotExist().create()
graph.schema().edgeLabel("supports").sourceLabel("software").targetLabel("language").properties("weight").ifNotExist().create()
// TinkerPop
okram = graph.addVertex(T.label, "person", T.id, "okram", "name", "Marko A. Rodriguez", "age", 29, "addr", "Santa Fe, New Mexico", "weight", 1)
spmallette = graph.addVertex(T.label, "person", T.id, "spmallette", "name", "Stephen Mallette", "age", 0, "addr", "", "weight", 1)
tinkerpop = graph.addVertex(T.label, "software", "name", "TinkerPop", "lang", "java", "tag", "Graph computing framework", "weight", 1)
tinkergraph = graph.addVertex(T.label, "software", "name", "TinkerGraph", "lang", "java", "tag", "In-memory property graph", "weight", 1)
gremlin = graph.addVertex(T.label, "language", "name", "Gremlin", "lang", "groovy/python/javascript", "weight", 1)
okram.addEdge("created", tinkerpop, "weight", 1)
spmallette.addEdge("created", tinkerpop, "weight", 1)
okram.addEdge("knows", spmallette, "weight", 1)
tinkerpop.addEdge("define", gremlin, "weight", 1)
tinkerpop.addEdge("contains", tinkergraph, "weight", 1)
tinkergraph.addEdge("supports", gremlin, "weight", 1)
// Titan
dalaro = graph.addVertex(T.label, "person", T.id, "dalaro", "name", "Dan LaRocque ", "age", 0, "addr", "", "weight", 1)
mbroecheler = graph.addVertex(T.label, "person", T.id, "mbroecheler", "name", "Matthias Broecheler", "age", 29, "addr", "San Francisco", "weight", 1)
titan = graph.addVertex(T.label, "software", "name", "Titan", "lang", "java", "tag", "Graph Database", "weight", 1)
dalaro.addEdge("created", titan, "weight", 1)
mbroecheler.addEdge("created", titan, "weight", 1)
okram.addEdge("created", titan, "weight", 1)
dalaro.addEdge("knows", mbroecheler, "weight", 1)
titan.addEdge("implements", tinkerpop, "weight", 1)
titan.addEdge("supports", gremlin, "weight", 1)
// HugeGraph
javeme = graph.addVertex(T.label, "person", T.id, "javeme", "name", "Jermy Li", "age", 29, "addr", "Beijing", "weight", 1)
zhoney = graph.addVertex(T.label, "person", T.id, "zhoney", "name", "Zhoney Zhang", "age", 29, "addr", "Beijing", "weight", 1)
linary = graph.addVertex(T.label, "person", T.id, "linary", "name", "Linary Li", "age", 28, "addr", "Wuhan. Hubei", "weight", 1)
hugegraph = graph.addVertex(T.label, "software", "name", "HugeGraph", "lang", "java", "tag", "Graph Database", "weight", 1)
javeme.addEdge("created", hugegraph, "weight", 1)
zhoney.addEdge("created", hugegraph, "weight", 1)
linary.addEdge("created", hugegraph, "weight", 1)
javeme.addEdge("knows", zhoney, "weight", 1)
javeme.addEdge("knows", linary, "weight", 1)
hugegraph.addEdge("implements", tinkerpop, "weight", 1)
hugegraph.addEdge("supports", gremlin, "weight", 1)
输入g.V()查询结果:
End:安装成功
参考文章:
HugeGraph中文官网
准备执行Gremlin的图形化环境
#End-------------------------------------------------------------------------
文章为原创,转载请注明出处。
欢迎大家对我的文章中的疑问进行留言,多多交流