本文介绍如何使用HTTP REST方式连接和操作图数据库GDB。REST API兼容Gremlin3.3.x和3.4.0版本。

前提条件

请确保图数据库GDB的实例与您的ECS虚拟机处于同一个VPC网络环境。

操作步骤

以下示例中,需要将配置信息替换成您的图数据库实例的相关信息。
  • 将${your-gdb-endpoint}改为您的图数据库GDB实例的域名。
  • 将${username}改为您的图数据库GDB实例的用户名。
  • 将${password}改为您的图数据库GDB实例的密码。
  1. 图数据库GDB的HTTP接入点为${your_gdb_endpoint}:8182/gremlin
  2. 连接时可以使用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":"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)"
  3. 使用REST请求访问服务器的时候,可以以binding形式携带参数:
    curl -u ${username}:${password} -X POST -d '{"gremlin":"g.V().limit(n)","bindings":{"n":1}}' http://${your_gdb_endpoint}:8182/gremlin
  4. 返回结果示例如下:
    {
        "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范例,请参见文档连接实例

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