本文介绍如何使用HTTP REST方式连接和操作图数据库GDB。REST API兼容Gremlin3.3.x和3.4.0版本。
前提条件
请确保图数据库GDB的实例与您的ECS虚拟机处于同一个VPC网络环境。
操作步骤
以下示例中,需要将配置信息替换成您的图数据库实例的相关信息。
- 将${your-gdb-endpoint}改为您的图数据库GDB实例的域名。
- 将${username}改为您的图数据库GDB实例的用户名。
- 将${password}改为您的图数据库GDB实例的密码。
- 图数据库GDB的HTTP接入点为
${your_gdb_endpoint}:8182/gremlin
。 - 连接时可以使用GET请求,也可以使用POST请求。建议使用POST请求进行操作:
curl -u ${username}:${password} -X POST -d '{"gremlin":"g.V().limit(1)"}' http://${your_gdb_endpoint}:8182/gremlin //此处注意需要对label值的双引号进行转义 curl -u ${username}:${password} -X POST -d '{"gremlin":"g.V().hasLabel(\"movie\").limit(10)"}' http://${your_gdb_endpoint}:8182/gremlin curl -u ${username}:${password} "http://${your_gdb_endpoint}:8182/gremlin?gremlin=g.V().limit(1)"
- 使用REST请求访问服务器的时候,可以以binding形式携带参数:
curl -u ${username}:${password} -X POST -d '{"gremlin":"g.V().limit(n)","bindings":{"n":1}}' http://${your_gdb_endpoint}:8182/gremlin
- 返回结果示例如下:
{ "requestId": "e640005a-f2fd-403e-812c-f61e7a3fb7cb", "result": { "data": { "@type": "g:List", "@value": [ { "@type": "g:Vertex", "@value": { "id": "3a63cc90-d957-4324-9ffc-16a8e4c1c1f4", "label": "label", "properties": { "pint": [ { "@type": "g:VertexProperty", "@value": { "id": "3a63cc90-d957-4324-9ffc-16a8e4c1c1f4", "label": "label", "value": { "@type": "g:Int32", "@value": 3 } } } ] } } } ] }, "meta": { "@type": "g:Map", "@value": [] } }, "status": { "attributes": { "@type": "g:Map", "@value": [] }, "code": 200, "message": "" } }
以上示例是使用 g.V().limit(n)
遍历返回GDB中的部分点。更多DSL范例,请参见文档通过Gremlin Console连接实例。
REST接口支持模板化调用方式,示例如下:
DSL硬编码
g.V().hasLabel('gdb_sample_person').drop()
|
|
V
模板化调用
g.V().hasLabel(label).drop()
bindings:{"label":"gdb_sample_person"}
有关Gremlin REST接口的更多信息,请参阅Apache TinkerPop3文档中的Connecting via HTTP。