Version 1.0 of the documentation is no longer actively maintained. The site that you are currently viewing is an archived snapshot.
For up-to-date documentation, see the latest version .
Edge API 2.2 Edge 顶点 id 格式的修改也影响到了边的 Id 以及源顶点和目标顶点 id 的格式。
EdgeId是由 src-vertex-id + direction + label + sort-values + tgt-vertex-id 拼接而成,
但是这里的顶点id类型不是通过引号区分的,而是根据前缀区分:
当 id 类型为 number 时,EdgeId 的顶点 id 前有一个前缀L ,形如 “L123456>1»L987654” 当 id 类型为 string 时,EdgeId 的顶点 id 前有一个前缀S ,形如 “S1:peter>1»S2:lop” 接下来的示例均假设已经创建好了前述的各种schema和vertex信息
2.2.1 创建一条边 Params说明
label:边类型名称,必填 outV:源顶点id,必填 inV:目标顶点id,必填 outVLabel:源顶点类型。必填 inVLabel:目标顶点类型。必填 properties: 边关联的属性,对象内部结构为:name:属性名称 value:属性值 Method & Url
1 POST http://localhost:8080/graphs/hugegraph/graph/edges Request Body
1 {
2 "label" : "created" ,
3 "outV" : "1:peter" ,
4 "inV" : "2:lop" ,
5 "outVLabel" : "person" ,
6 "inVLabel" : "software" ,
7 "properties" : {
8 "date" : "2017-5-18" ,
9 "weight" : 0.2
10 }
11 } Response Status Response Body
1 {
2 "id" : "S1:peter>1>>S2:lop" ,
3 "label" : "created" ,
4 "type" : "edge" ,
5 "inVLabel" : "software" ,
6 "outVLabel" : "person" ,
7 "inV" : "2:lop" ,
8 "outV" : "1:peter" ,
9 "properties" : {
10 "date" : "2017-5-18" ,
11 "weight" : 0.2
12 }
13 } 2.2.2 创建多条边 Params check_vertex: 是否检查顶点存在(true | false),当设置为 true 而待插入边的源顶点或目标顶点不存在时会报错。 Method & Url
1 POST http://localhost:8080/graphs/hugegraph/graph/edges/batch Request Body
1 [
2 {
3 "label" : "created" ,
4 "outV" : "1:peter" ,
5 "inV" : "2:lop" ,
6 "outVLabel" : "person" ,
7 "inVLabel" : "software" ,
8 "properties" : {
9 "date" : "2017-5-18" ,
10 "weight" : 0.2
11 }
12 },
13 {
14 "label" : "knows" ,
15 "outV" : "1:marko" ,
16 "inV" : "1:vadas" ,
17 "outVLabel" : "person" ,
18 "inVLabel" : "person" ,
19 "properties" : {
20 "date" : "2016-01-10" ,
21 "weight" : 0.5
22 }
23 }
24 ] Response Status Response Body
1 [
2 "S1:peter>1>>S2:lop" ,
3 "S1:marko>2>>S1:vadas"
4 ] 2.2.3 更新边属性 Method & Url
1 PUT http://localhost:8080/graphs/hugegraph/graph/edges/S1:peter>1>>S2:lop?action=append Request Body
1 {
2 "properties" : {
3 "weight" : 1.0
4 }
5 } 注意:属性的取值是有三种类别的,分别是single、set和list。如果是single,表示增加或更新属性值;如果是set或list,则表示追加属性值。
Response Status Response Body
1 {
2 "id" : "S1:peter>1>>S2:lop" ,
3 "label" : "created" ,
4 "type" : "edge" ,
5 "inVLabel" : "software" ,
6 "outVLabel" : "person" ,
7 "inV" : "2:lop" ,
8 "outV" : "1:peter" ,
9 "properties" : {
10 "date" : "2017-5-18" ,
11 "weight" : 1
12 }
13 } 2.2.4 批量更新边属性 功能说明 与批量更新顶点属性类似
假设原边及属性为:
1 {
2 "edges" :[
3 {
4 "id" : "S1:josh>2>>S2:ripple" ,
5 "label" : "created" ,
6 "type" : "edge" ,
7 "outV" : "1:josh" ,
8 "outVLabel" : "person" ,
9 "inV" : "2:ripple" ,
10 "inVLabel" : "software" ,
11 "properties" :{
12 "weight" : 1 ,
13 "date" : 1512835200000
14 }
15 },
16 {
17 "id" : "S1:marko>1>7JooBil0>S1:josh" ,
18 "label" : "knows" ,
19 "type" : "edge" ,
20 "outV" : "1:marko" ,
21 "outVLabel" : "person" ,
22 "inV" : "1:josh" ,
23 "inVLabel" : "person" ,
24 "properties" :{
25 "weight" : 1 ,
26 "date" : 1361289600000
27 }
28 }
29 ]
30 } Method & Url
1 PUT http://127.0.0.1:8080/graphs/hugegraph/graph/edges/batch Request Body
1 {
2 "edges" :[
3 {
4 "id" : "S1:josh>2>>S2:ripple" ,
5 "label" : "created" ,
6 "outV" : "1:josh" ,
7 "outVLabel" : "person" ,
8 "inV" : "2:ripple" ,
9 "inVLabel" : "software" ,
10 "properties" :{
11 "weight" : 0.1 ,
12 "date" : 1522835200000
13 }
14 },
15 {
16 "id" : "S1:marko>1>7JooBil0>S1:josh" ,
17 "label" : "knows" ,
18 "outV" : "1:marko" ,
19 "outVLabel" : "person" ,
20 "inV" : "1:josh" ,
21 "inVLabel" : "person" ,
22 "properties" :{
23 "weight" : 0.2 ,
24 "date" : 1301289600000
25 }
26 }
27 ],
28 "update_strategies" :{
29 "weight" : "SUM" ,
30 "date" : "BIGGER"
31 },
32 "check_vertex" : false ,
33 "create_if_not_exist" : true
34 } Response Status Response Body
1 {
2 "edges" :[
3 {
4 "id" : "S1:josh>2>>S2:ripple" ,
5 "label" : "created" ,
6 "type" : "edge" ,
7 "outV" : "1:josh" ,
8 "outVLabel" : "person" ,
9 "inV" : "2:ripple" ,
10 "inVLabel" : "software" ,
11 "properties" :{
12 "weight" : 1.1 ,
13 "date" : 1522835200000
14 }
15 },
16 {
17 "id" : "S1:marko>1>7JooBil0>S1:josh" ,
18 "label" : "knows" ,
19 "type" : "edge" ,
20 "outV" : "1:marko" ,
21 "outVLabel" : "person" ,
22 "inV" : "1:josh" ,
23 "inVLabel" : "person" ,
24 "properties" :{
25 "weight" : 1.2 ,
26 "date" : 1301289600000
27 }
28 }
29 ]
30 } 2.2.5 删除边属性 Method & Url
1 PUT http://localhost:8080/graphs/hugegraph/graph/edges/S1:peter>1>>S2:lop?action=eliminate Request Body
1 {
2 "properties" : {
3 "weight" : 1.0
4 }
5 } 注意:这里会直接删除属性(删除key和所有value),无论其属性的取值是single、set或list。
Response Status Response Body
1 {
2 "id" : "S1:peter>1>>S2:lop" ,
3 "label" : "created" ,
4 "type" : "edge" ,
5 "inVLabel" : "software" ,
6 "outVLabel" : "person" ,
7 "inV" : "2:lop" ,
8 "outV" : "1:peter" ,
9 "properties" : {
10 "date" : "20170324"
11 }
12 } 2.2.6 获取符合条件的边 Params vertex_id: 顶点id direction: 边的方向(OUT | IN | BOTH) label: 边的标签 properties: 属性键值对(根据属性查询的前提是预先建立了索引) offset:偏移,默认为0 limit: 查询数目,默认为100 page: 页号 支持的查询有以下几种:
提供vertex_id参数时,不可以使用参数page,direction、label、properties可选,offset和limit可以
限制结果范围 不提供vertex_id参数时,label和properties可选如果使用page参数,则:offset参数不可用(不填或者为0),direction不可用,properties最多只能有一个 如果不使用page参数,则:offset和limit可以用来限制结果范围,direction参数忽略 属性键值对由JSON格式的属性名称和属性值组成,允许多个属性键值对作为查询条件,属性值支持精确匹配和范围匹配,精确匹配时形如properties={"weight":0.8},范围匹配时形如properties={"age":"P.gt(0.8)"},范围匹配支持的表达式如下:
查询与顶点 person:josh(vertex_id=“1:josh”) 相连且 label 为 created 的边
Method & Url
1 GET http://127.0.0.1:8080/graphs/hugegraph/graph/edges?vertex_id="1:josh"&direction=BOTH&label=created&properties={} Response Status Response Body
1 {
2 "edges" : [
3 {
4 "id" : "S1:josh>1>>S2:lop" ,
5 "label" : "created" ,
6 "type" : "edge" ,
7 "inVLabel" : "software" ,
8 "outVLabel" : "person" ,
9 "inV" : "2:lop" ,
10 "outV" : "1:josh" ,
11 "properties" : {
12 "date" : "20091111" ,
13 "weight" : 0.4
14 }
15 },
16 {
17 "id" : "S1:josh>1>>S2:ripple" ,
18 "label" : "created" ,
19 "type" : "edge" ,
20 "inVLabel" : "software" ,
21 "outVLabel" : "person" ,
22 "inV" : "2:ripple" ,
23 "outV" : "1:josh" ,
24 "properties" : {
25 "date" : "20171210" ,
26 "weight" : 1
27 }
28 }
29 ]
30 } 分页查询所有边,获取第一页(page不带参数值),限定3条
Method & Url
1 GET http://127.0.0.1:8080/graphs/hugegraph/graph/edges?page&limit=3 Response Status Response Body
1 {
2 "edges" : [{
3 "id" : "S1:peter>2>>S2:lop" ,
4 "label" : "created" ,
5 "type" : "edge" ,
6 "inVLabel" : "software" ,
7 "outVLabel" : "person" ,
8 "inV" : "2:lop" ,
9 "outV" : "1:peter" ,
10 "properties" : {
11 "weight" : 0.2 ,
12 "date" : "20170324"
13 }
14 },
15 {
16 "id" : "S1:josh>2>>S2:lop" ,
17 "label" : "created" ,
18 "type" : "edge" ,
19 "inVLabel" : "software" ,
20 "outVLabel" : "person" ,
21 "inV" : "2:lop" ,
22 "outV" : "1:josh" ,
23 "properties" : {
24 "weight" : 0.4 ,
25 "date" : "20091111"
26 }
27 },
28 {
29 "id" : "S1:josh>2>>S2:ripple" ,
30 "label" : "created" ,
31 "type" : "edge" ,
32 "inVLabel" : "software" ,
33 "outVLabel" : "person" ,
34 "inV" : "2:ripple" ,
35 "outV" : "1:josh" ,
36 "properties" : {
37 "weight" : 1 ,
38 "date" : "20171210"
39 }
40 }
41 ],
42 "page" : "002500100753313a6a6f73681210010004000000020953323a726970706c65f07ffffffcf07ffffffd8460d63f4b398dd2721ed4fdb7716b420004"
43 } 返回的body里面是带有下一页的页号信息的,"page": "002500100753313a6a6f73681210010004000000020953323a726970706c65f07ffffffcf07ffffffd8460d63f4b398dd2721ed4fdb7716b420004",
在查询下一页的时候将该值赋给page参数。
分页查询所有边,获取下一页(page带上上一页返回的page值),限定3条
Method & Url
1 GET http://127.0.0.1:8080/graphs/hugegraph/graph/edges?page=002500100753313a6a6f73681210010004000000020953323a726970706c65f07ffffffcf07ffffffd8460d63f4b398dd2721ed4fdb7716b420004&limit=3 Response Status Response Body
1 {
2 "edges" : [{
3 "id" : "S1:marko>1>20130220>S1:josh" ,
4 "label" : "knows" ,
5 "type" : "edge" ,
6 "inVLabel" : "person" ,
7 "outVLabel" : "person" ,
8 "inV" : "1:josh" ,
9 "outV" : "1:marko" ,
10 "properties" : {
11 "weight" : 1 ,
12 "date" : "20130220"
13 }
14 },
15 {
16 "id" : "S1:marko>1>20160110>S1:vadas" ,
17 "label" : "knows" ,
18 "type" : "edge" ,
19 "inVLabel" : "person" ,
20 "outVLabel" : "person" ,
21 "inV" : "1:vadas" ,
22 "outV" : "1:marko" ,
23 "properties" : {
24 "weight" : 0.5 ,
25 "date" : "20160110"
26 }
27 },
28 {
29 "id" : "S1:marko>2>>S2:lop" ,
30 "label" : "created" ,
31 "type" : "edge" ,
32 "inVLabel" : "software" ,
33 "outVLabel" : "person" ,
34 "inV" : "2:lop" ,
35 "outV" : "1:marko" ,
36 "properties" : {
37 "weight" : 0.4 ,
38 "date" : "20171210"
39 }
40 }
41 ],
42 "page" : null
43 } 此时"page": null表示已经没有下一页了 (注: 后端为 Cassandra 时,为了性能考虑,返回页恰好为最后一页时,返回 page 值可能非空,通过该 page 再请求下一页数据时则返回 空数据 及 page = null,其他情况类似)
2.2.7 根据Id获取边 Method & Url
1 GET http://localhost:8080/graphs/hugegraph/graph/edges/S1:peter>1>>S2:lop Response Status Response Body
1 {
2 "id" : "S1:peter>1>>S2:lop" ,
3 "label" : "created" ,
4 "type" : "edge" ,
5 "inVLabel" : "software" ,
6 "outVLabel" : "person" ,
7 "inV" : "2:lop" ,
8 "outV" : "1:peter" ,
9 "properties" : {
10 "date" : "2017-5-18" ,
11 "weight" : 0.2
12 }
13 } 2.2.8 根据Id删除边 Params 仅根据Id删除边
Method & Url
1 DELETE http://localhost:8080/graphs/hugegraph/graph/edges/S1:peter>1>>S2:lop Response Status 根据Label+Id删除边
通过指定Label参数和Id来删除边时,一般来说其性能比仅根据Id删除会更好。
Method & Url
1 DELETE http://localhost:8080/graphs/hugegraph/graph/edges/S1:peter>1>>S2:lop?label=person Response Status