全部产品

使用gremlin-console创建和遍历图

更新时间:2018-12-29 11:24:39

1. 安装 Gremlin

要安装 Gremlin Console,请执行以下操作:

请确保您已安装Java8,确保您已经购买过graphdb服务,如还没有参考购买文档

下载 Gremlin Console V3.3.3。将下载的文件解压缩到工作目录。进入解压目录,并执行 bin/gremlin.sh 验证下载

  1. $ unzip -q ~/Downloads/apache-tinkerpop-gremlin-console-3.3.3-bin.zip
  2. $ cd apache-tinkerpop-gremlin-console-3.3.3
  3. $ bin/gremlin.sh
  4. \,,,/
  5. (o o)
  6. -----oOOo-(3)-oOOo-----
  7. plugin activated: tinkerpop.server
  8. plugin activated: tinkerpop.utilities
  9. plugin activated: tinkerpop.tinkergraph
  10. gremlin> :q
  1. :q 退出

配置 Gremlin Console。您可以在 graphdb 服务的控制台 拿到图库服务地址。替换host变量至您的图库地址, 将配置保存到 conf/remote.yaml。

  1. hosts: [$host]
  2. port: $port
  3. serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { serializeResultToString: true }}

2. 连接到graphdb

要验证连接,请再次执行 bin/gremlin.sh。然后,使用 :remote 命令连接到 tinkerpop 服务器:

  1. gremlin> :remote connect tinkerpop.server conf/remote.yaml session
  2. ==>Configured localhost/127.0.0.1:8188-[2279b058-e7f4-4902-8b7b-17e7228834b2]
  3. gremlin> :remote console
  4. ==>All scripts will now be sent to Gremlin Server - [localhost/127.0.0.1:8180]-[13099fba-3dd8-4620-9aa5-9cf3a3788d80] - type ':remote console' to return to local mode

此命令告诉 Gremlin 使用 conf/remote.yaml 中的配置,connect 到作为 tinerpop.server 的服务器。我们还通过另一个自变量 - session - 启用会话支持, 如果连接成功,您将看到上述消息以确认连接。

使用 :remote console 将所有控制台命令重定向到远程服务器

3. 向服务器发送命令

  1. $ bin/gremlin.sh
  2. \,,,/
  3. (o o)
  4. -----oOOo-(3)-oOOo-----
  5. plugin activated: tinkerpop.server
  6. plugin activated: tinkerpop.utilities
  7. plugin activated: tinkerpop.tinkergraph
  8. gremlin> 1+1
  9. ==>2
  10. gremlin>

4. 将顶点添加到图形

购买graphdb服务后,系统默认已为您创建了graph图库,并已打开,可直接使用graph操作图,使用g作为遍历源

  1. graph.createLabel(ElementType.VERTEX, "titan", ValueType.STRING, "name",
  2. ValueType.STRING, "age", ValueType.INT);
  3. Vertex saturn = graph.addVertex(T.label, "titan", T.id, "saturn","name", "saturn", "age", 10000);

5. 在图形中查找顶点

  • 通过用户自定义id查找,要将顶点重新分配给变量 v1,后续的 Gremlin 命令中可以使用这些变量

    1. v1 = g.V("saturn").next()
  • 通过属性查找要查找顶点(如名称为“saturn”的顶点),首先遍历图形,然后使用 has() 方法,并返回顶点的标识。

    1. g.V().has("name","saturn")
  • 注意上面讲扫描全表,合理的场景配合使用索引

    1. graph.createIndex(ElementType.VERTEX, "titan", "name",true);
  • graphdb将为label为titan 所有顶点的name属性列建立二级索引,查询时请使用hasLabel确保使用了索引

    1. g.V().hasLabel("titan").has("name","saturn")

6. 添加边

先创建边schema

  1. graph.createLabel(ElementType.EDGE, "brother", ValueType.STRING);
  2. graph.connectLabels("titan","brother","titan");

添加边

  1. Vertex jupiter = graph.addVertex(T.label, "god", T.id, "jupiter", "name", "jupiter", "age", 5000);
  2. jupiter.addEdge("brother", saturn);

7. 查询图形

现在,您可以查询图形以查找 saturn所有兄弟名称。

  1. g.V("saturn").in("brother").values("name")