blob: 7a1da3f88a2e906f886dd0e19615737384338950 [file] [log] [blame] [view]
### 8.1 Gremlin
#### 8.1.1 向HugeGraphServer发送gremlin语句(GET),同步执行
##### Params
- gremlin: 要发送给`HugeGraphServer`执行的`gremlin`语句
- bindings: 用来绑定参数,key是字符串,value是绑定的值(只能是字符串或者数字),功能类似于MySQL Prepared Statement,用于加速语句执行
- language: 发送语句的语言类型,默认为`gremlin-groovy`
- aliases: 为存在于图空间的已有变量添加别名
**查询顶点**
##### Method & Url
```
GET http://127.0.0.1:8080/gremlin?gremlin=hugegraph.traversal().V('1:marko')
```
##### Response Status
```json
200
```
##### Response Body
```json
{
"requestId": "c6ef47a8-b634-4b07-9d38-6b3b69a3a556",
"status": {
"message": "",
"code": 200,
"attributes": {}
},
"result": {
"data": [{
"id": "1:marko",
"label": "person",
"type": "vertex",
"properties": {
"city": [{
"id": "1:marko>city",
"value": "Beijing"
}],
"name": [{
"id": "1:marko>name",
"value": "marko"
}],
"age": [{
"id": "1:marko>age",
"value": 29
}]
}
}],
"meta": {}
}
}
```
#### 8.1.2 向HugeGraphServer发送gremlin语句(POST),同步执行
##### Method & Url
```
POST http://localhost:8080/gremlin
```
**查询顶点**
##### Request Body
```json
{
"gremlin": "hugegraph.traversal().V('1:marko')",
"bindings": {},
"language": "gremlin-groovy",
"aliases": {}
}
```
##### Response Status
```json
200
```
##### Response Body
```json
{
"requestId": "c6ef47a8-b634-4b07-9d38-6b3b69a3a556",
"status": {
"message": "",
"code": 200,
"attributes": {}
},
"result": {
"data": [{
"id": "1:marko",
"label": "person",
"type": "vertex",
"properties": {
"city": [{
"id": "1:marko>city",
"value": "Beijing"
}],
"name": [{
"id": "1:marko>name",
"value": "marko"
}],
"age": [{
"id": "1:marko>age",
"value": 29
}]
}
}],
"meta": {}
}
}
```
注意:
> 这里是直接使用图对象(hugegraph),先获取其遍历器(traversal()),再获取顶点。
不能直接写成`graph.traversal().V()``g.V()`,可以通过`"aliases": {"graph": "hugegraph", "g": "__g_hugegraph"}`
为图和遍历器添加别名后使用别名操作。其中,`hugegraph`是原生存在的变量,`__g_hugegraph``HugeGraphServer`额外添加的变量,
每个图都会存在一个对应的这样格式(__g_${graph})的遍历器对象。
> 响应体的结构与其他 Vertex Edge RESTful API的结构有区别,用户可能需要自行解析。
**查询边**
##### Request Body
```json
{
"gremlin": "g.E('S1:marko>2>>S2:lop')",
"bindings": {},
"language": "gremlin-groovy",
"aliases": {
"graph": "hugegraph",
"g": "__g_hugegraph"
}
}
```
##### Response Status
```json
200
```
##### Response Body
```json
{
"requestId": "3f117cd4-eedc-4e08-a106-ee01d7bb8249",
"status": {
"message": "",
"code": 200,
"attributes": {}
},
"result": {
"data": [{
"id": "S1:marko>2>>S2:lop",
"label": "created",
"type": "edge",
"inVLabel": "software",
"outVLabel": "person",
"inV": "2:lop",
"outV": "1:marko",
"properties": {
"weight": 0.4,
"date": "20171210"
}
}],
"meta": {}
}
}
```
#### 8.1.3 向HugeGraphServer发送gremlin语句(POST),异步执行
##### Method & Url
```
POST http://localhost:8080/graphs/hugegraph/jobs/gremlin
```
**查询顶点**
##### Request Body
```json
{
"gremlin": "g.V('1:marko')",
"bindings": {},
"language": "gremlin-groovy",
"aliases": {}
}
```
注意:
> 异步执行Gremlin语句暂不支持aliases,可以使用 `graph` 代表要操作的图,也可以直接使用图的名字, 例如 `hugegraph`;
另外`g`代表 traversal,等价于 `graph.traversal()` 或者 `hugegraph.traversal()`
##### Response Status
```json
201
```
##### Response Body
```json
{
"task_id": 1
}
```
注:
> 可以通过`GET http://localhost:8080/graphs/hugegraph/tasks/1`(其中"1"task_id)来查询异步任务的执行状态,更多[异步任务RESTful API](task.md)
**查询边**
##### Request Body
```json
{
"gremlin": "g.E('S1:marko>2>>S2:lop')",
"bindings": {},
"language": "gremlin-groovy",
"aliases": {}
}
```
##### Response Status
```json
201
```
##### Response Body
```json
{
"task_id": 2
}
```
注:
> 可以通过`GET http://localhost:8080/graphs/hugegraph/tasks/2`(其中"2"task_id)来查询异步任务的执行状态,更多[异步任务RESTful API](task.md)