购买GDB与ES实例后,需要在GDB实例中注册ES信息。

  1. 登录ECS实例,具体请参见连接方式概述ECS远程连接操作指南
  2. 注册并查看ES信息。
    1. 执行如下命令,在GDB中注册ES信息。
      curl -u ${username}:${password} 
      "http://${your-gdb-endpoint}:8182/controller/es/updateEsService?endpoint=${your-es-endpoint}&port=${your-es-port}&username=${your-es-username}&password=${your-es-password}"
      • ${username}改为您的图数据库GDB实例的用户名。
      • ${password}改为您的图数据库GDB实例的密码。
      • ${your-gdb-endpoint}改为您的图数据库GDB实例的域名,如果您用外网访问的方式,下面的8182端口要替换为3734。
      • ${your-es-endpoint}替换为您的ES实例的域名。
      • ${your-es-port}改为您的ElasticSearch实例的端口,默认端口应为9200。
      • ${your-es-username}改为你的ElasticSearch实例的用户名,默认名应为elastic。
      • ${your-es-password}改为您的ElasticSearch实例的密码。
      • 您在指定每个字段的时候,不要传入空格,否则语句将无法执行,且无任何返回值。
    2. 执行如下命令,查看注册ES信息。

      您的ES账号的密码已经被加密存储。

      curl -u ${username}:${password} "http://${your-gdb-endpoint}:8182/controller/es/getEsService"
    3. 查看与ES连接的状态。

      在导入数据之前,一定要执行这一步,这个主要是通过connectStatus字段观察配置的信息,具体返回的信息,以及对应状态的含义可以参考附表。

      curl -u ${username}:${password} 
      "http://${your-gdb-endpoint}:8182/controller/es/getMonitor"
  3. 注册并查看同步字段信息。
    • 指定同步字段。

      在你第一次使用ES服务的时候,需要指定需要增量同步至ES的属性字段,这样可以减轻同步链路的负担。

      • vertex-property替换为您数据集中点的属性字段。
      • edge-property替换为您数据集中边的属性字段。
      • 指定的字段中不能包含 “,”号和“.”点,否则无法指定成功。
      • 不需要指定label的字段,其已经默认同步至ES中。
      • 如果您刚开始并不想指定字段,也需要运行该语句,要不然ES服务将不可用,您只需要在vertex与edge中不指定同步字段就好,即"vertex":[""],"edge"=[""]这样的形式(双引号内不要有空格),将会同步点边属性所有的字段至ES中,但是包含 “,”号和“.”点的属性不会同步。
      • 只支持字符串类型的属性同步至ES中,如果您的属性的字段是非字符串类型,例如,整型、浮点型等,这些字段将不会同步至ES中,即使您指定了需要将该字段同步至ES中。
      • 您如果在使用GDB的服务中,想指定一个新的字段同步至ES中,您可以重新执行该操作,加入需要指定的字段即可,但是需要特别注意的是,本操作是覆盖操作,因此您需要将以前指定的同步字段也一并写入,还要注意该操作一定要在向GDB写入数据之前,因为这样可以确保您新添加的字段能够正确的同步至ES中。
      curl -u ${username}:${password} -H  "Content-Type: application/json" -X POST --data '
      {"vertex":["${vertex-property1}","${vertex-property2}"],
      "edge":["${edge-property1}","${edge-property2}"]
      }' "http://${your-gdb-endpoint}:8182/controller/es/setField"
    • 查看指定同步字段。

      可以查看点边指定的导入字段,如果发现指定字段错误,可以重新指定需要导入的字段。

      curl -u ${username}:${password} "http://${your-gdb-endpoint}:8182/controller/es/getField"
      返回结果如下:
      • vertex表示点属性同步至ES中的字段。
      • edge表示边属性同步至ES中的字段。
      {"payload":"{\"edge\":[\"weight\",\"desc\"],\"vertex\":[\"value\",\"name\",\"age\",\"location\"]}","status":"200 OK"}%
  4. 开启同步,将GDB数据增量同步至ES中。

    如果您配置完ES的信息,并指定完点边需要导入的字段后,您就可以通过以下命令将GDB的数据增量同步至ES中了。

    curl -u ${username}:${password} "http://${your-gdb-endpoint}:8182/controller/es/beginSync"
  5. 查看点和边在ES中的index取值。
    该步骤不是必要的步骤,如果您只是想使用GDB+ES,不关注数据在ES中的存储,这一步骤可以跳过。但您想在ES中查询数据同步的情况,这一步又是必须的。
    curl -u ${username}:${password} "http://${your-gdb-endpoint}:8182/controller/es/getEsIndex"
    返回结果如下:
    • gdbVertex表示点数据在ES中index的取值。
    • gdbEdge表示边数据在ES中index的取值。
    {"payload":"{\"gdbEdge\":\"gdb_edge_cvkbdqcl\",\"gdbVertex\":\"gdb_vertex_cvkbdqcl\"}","status":"200 OK"}
  6. 查看同步链路的状态。
    通过以下命令,可以查看GDB同步至ES中数据链路的状态。
    curl -u ${username}:${password} "http://${your-gdb-endpoint}:8182/controller/es/getSyncStatus"