Gremlin学习(一)

2019-04-21  本文已影响0人  DataArk

一、启动JanusGraph

在命令行输入./bin/gremlin.sh启动JanusGraph

使用hbase-es作为数据库和检索:

二、加载数据

加载众神数据集g=GraphOfTheGodsFactory.load(graph)
注:上面这种做法是一个官方demo,若使用已有的图数据库,在连接图数据后使用g = graph.traversal()即可

加载的数据如下:

三、gremlin基本用法

  1. V():查询顶点(也就是实体或者节点),一般作为图查询的第1步,后面可以续接的语句种类繁多(后续会一一讲解)

在JanusGraph中为了查询效率,会给每一个顶点赋予一个index,其实大部分图数据库都是这么做的

  1. 根据id查找顶点:g.V(8360)

  2. 使用属性值对实体进行筛选 g.V().has('name', 'alcmene')

  3. 查询图中所有的边:g.E()

查看name属性为alcmene的顶点

  1. 获取所有顶点的id:g.V().id()
  1. 获取所有属性的label也就是type: g.V().label()
  1. 查询所有顶点的属性:g.V().properties()
  1. 查询所有顶点的lang属性,无“lang”属性的顶点将跳过:g.V().properties('lang')

  2. 查询所有顶点的属性名称:g.V().properties().key()

  1. 查询所有顶点的属性值:g.V().properties().value()
  1. 获取顶点、边的属性:g.V().valueMap()
    valueMap()与 properties()不同的地方是:它们返回的结构不一样,后者将所有的属性扁平化到一个大列表里面,一个元素代表一个属性;前者保持一个顶点或一条边的属性作为一组,每一组由若干属性的键值对组成。

类似的,通过g.E().valueMap()查询所有边的属性

  1. out():访问顶点的OUT方向邻接点

查找和节点id为12360,out方向的关系名为lives的节点

  1. in 类似out,只是方向相反

查找和节点id为12360,in方向的关系名为pet的节点

12.访问和节点12360有关系的所有节点: both

  1. outE,inE,bothE作用和上面相同,只是这里返回的是边

g.V('12456').outE()
==>e[4r9-9m0-b2t-9jc][12456-lives->12360]

  1. outV、inV、bothV作用和上面也差不多,只是这个需要在边(关系)的基础上返回相应的节点

15、伙伴节点 outE().otherV()等价于out(),inE().otherV()等价于in()

上面的所用操作都可以拼接查询,这样就可以多跳查询

上一篇下一篇

猜你喜欢

热点阅读