本文介紹如何使用HTTP REST方式連接和操作圖數(shù)據(jù)庫(kù)GDB。REST API兼容Gremlin3.3.x和3.4.0版本。
前提條件
請(qǐng)確保圖數(shù)據(jù)庫(kù)GDB的實(shí)例與您的ECS虛擬機(jī)處于同一個(gè)VPC網(wǎng)絡(luò)環(huán)境。
操作步驟
以下示例中,需要將配置信息替換成您的圖數(shù)據(jù)庫(kù)實(shí)例的相關(guān)信息。
- 將${your-gdb-endpoint}改為您的圖數(shù)據(jù)庫(kù)GDB實(shí)例的域名。
- 將${username}改為您的圖數(shù)據(jù)庫(kù)GDB實(shí)例的用戶(hù)名。
- 將${password}改為您的圖數(shù)據(jù)庫(kù)GDB實(shí)例的密碼。
- 圖數(shù)據(jù)庫(kù)GDB的HTTP接入點(diǎn)為
${your_gdb_endpoint}:8182/gremlin
。 - 連接時(shí)可以使用GET請(qǐng)求,也可以使用POST請(qǐng)求。建議使用POST請(qǐng)求進(jìn)行操作:
curl -u ${username}:${password} -X POST -d '{"gremlin":"g.V().limit(1)"}' http://${your_gdb_endpoint}:8182/gremlin //此處注意需要對(duì)label值的雙引號(hào)進(jìn)行轉(zhuǎn)義 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請(qǐng)求訪(fǎng)問(wèn)服務(wù)器的時(shí)候,可以以binding形式攜帶參數(shù):
curl -u ${username}:${password} -X POST -d '{"gremlin":"g.V().limit(n)","bindings":{"n":1}}' http://${your_gdb_endpoint}:8182/gremlin
- 返回結(jié)果示例如下:
{ "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中的部分點(diǎn)。更多DSL范例,請(qǐng)參見(jiàn)文檔通過(guò)Gremlin Console連接實(shí)例。
REST接口支持模板化調(diào)用方式,示例如下:
DSL硬編碼
g.V().hasLabel('gdb_sample_person').drop()
|
|
V
模板化調(diào)用
g.V().hasLabel(label).drop()
bindings:{"label":"gdb_sample_person"}
有關(guān)Gremlin REST接口的更多信息,請(qǐng)參閱Apache TinkerPop3文檔中的Connecting via HTTP。