跳转到主要内容

文档 1.7 版本已不再积极维护,你当前浏览的是一份归档快照。 最新文档请参阅 最新版本。

VertexLabel API

1.3 VertexLabel

假设已经创建好了 1.1.3 中列出来的 PropertyKeys

Params 说明

  • id:顶点类型 id 值
  • name:顶点类型名称,必填
  • id_strategy: 顶点类型的 ID 策略,主键 ID、自动生成、自定义字符串、自定义数字、自定义 UUID,默认主键 ID
  • properties: 顶点类型关联的属性类型
  • primary_keys: 主键属性,当 ID 策略为 PRIMARY_KEY 时必须有值,其他 ID 策略时必须为空;
  • enable_label_index:是否开启类型索引,默认关闭
  • index_names:顶点类型创建的索引,详情见 3.4
  • nullable_keys:可为空的属性
  • user_data:设置顶点类型的通用信息,作用同属性类型

1.3.1 创建一个 VertexLabel

Method & Url
1POST http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/schema/vertexlabels
Request Body
 1{
 2    "name": "person",
 3    "id_strategy": "DEFAULT",
 4    "properties": [
 5        "name",
 6        "age"
 7    ],
 8    "primary_keys": [
 9        "name"
10    ],
11    "nullable_keys": [],
12    "enable_label_index": true
13}
Response Status
1201
Response Body
 1{
 2    "id": 1,
 3    "primary_keys": [
 4        "name"
 5    ],
 6    "id_strategy": "PRIMARY_KEY",
 7    "name": "person2",
 8    "index_names": [
 9    ],
10    "properties": [
11        "name",
12        "age"
13    ],
14    "nullable_keys": [
15    ],
16    "enable_label_index": true,
17    "user_data": {}
18}

从 hugegraph-server v0.11.2 版本开始支持顶点的 TTL 功能。顶点的 TTL 是通过 VertexLabel 来设置的。比如希望 person 类型的顶点存活时间为一天,需要在创建 person VertexLabel 的时候将 TTL 字段设置为 86400000,即单位为毫秒。

 1{
 2    "name": "person",
 3    "id_strategy": "DEFAULT",
 4    "properties": [
 5        "name",
 6        "age"
 7    ],
 8    "primary_keys": [
 9        "name"
10    ],
11    "nullable_keys": [],
12    "ttl": 86400000,
13    "enable_label_index": true
14}

另外,当顶点中带有"创建时间"的属性且希望以"创建时间"属性作为计算顶点存活时间的起点时,可以设置 VertexLabel 中的 ttl_start_time 字段。比如 person VertexLabel 有 createdTime 属性,且 createdTime 是 Date 类型的参数,希望 person 类型的顶点从创建开始存活一天的时间,那么创建 person VertexLabel 的 Request Body 如下:

 1{
 2    "name": "person",
 3    "id_strategy": "DEFAULT",
 4    "properties": [
 5        "name",
 6        "age",
 7        "createdTime"
 8    ],
 9    "primary_keys": [
10        "name"
11    ],
12    "nullable_keys": [],
13    "ttl": 86400000,
14    "ttl_start_time": "createdTime",
15    "enable_label_index": true
16}

1.3.2 为已存在的 VertexLabel 添加 properties 或 userdata,或者移除 userdata(目前不支持移除 properties)

Params
  • action: 表示当前行为是添加还是移除,取值为append(添加)和eliminate(移除)
Method & Url
1PUT http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/schema/vertexlabels/person?action=append
Request Body
 1{
 2    "name": "person",
 3    "properties": [
 4        "city"
 5    ],
 6    "nullable_keys": ["city"],
 7    "user_data": {
 8        "super": "animal"
 9    }
10}
Response Status
1200
Response Body
 1{
 2    "id": 1,
 3    "primary_keys": [
 4        "name"
 5    ],
 6    "id_strategy": "PRIMARY_KEY",
 7    "name": "person",
 8    "index_names": [
 9    ],
10    "properties": [
11        "city",
12        "name",
13        "age"
14    ],
15    "nullable_keys": [
16        "city"
17    ],
18    "enable_label_index": true,
19    "user_data": {
20        "super": "animal"
21    }
22}

1.3.3 获取所有的 VertexLabel

Method & Url
1GET http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/schema/vertexlabels
Response Status
1200
Response Body
 1{
 2    "vertexlabels": [
 3        {
 4            "id": 1,
 5            "primary_keys": [
 6                "name"
 7            ],
 8            "id_strategy": "PRIMARY_KEY",
 9            "name": "person",
10            "index_names": [
11            ],
12            "properties": [
13                "city",
14                "name",
15                "age"
16            ],
17            "nullable_keys": [
18                "city"
19            ],
20            "enable_label_index": true,
21            "user_data": {
22                "super": "animal"
23            }
24        },
25        {
26            "id": 2,
27            "primary_keys": [
28                "name"
29            ],
30            "id_strategy": "PRIMARY_KEY",
31            "name": "software",
32            "index_names": [
33            ],
34            "properties": [
35                "price",
36                "name",
37                "lang"
38            ],
39            "nullable_keys": [
40                "price"
41            ],
42            "enable_label_index": false,
43            "user_data": {}
44        }
45    ]
46}

1.3.4 根据 name 获取 VertexLabel

Method & Url
1GET http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/schema/vertexlabels/person
Response Status
1200
Response Body
 1{
 2    "id": 1,
 3    "primary_keys": [
 4        "name"
 5    ],
 6    "id_strategy": "PRIMARY_KEY",
 7    "name": "person",
 8    "index_names": [
 9    ],
10    "properties": [
11        "city",
12        "name",
13        "age"
14    ],
15    "nullable_keys": [
16        "city"
17    ],
18    "enable_label_index": true,
19    "user_data": {
20        "super": "animal"
21    }
22}

1.3.5 根据 name 删除 VertexLabel

删除 VertexLabel 会导致删除对应的顶点以及相关的索引数据,会产生一个异步任务

Method & Url
1DELETE http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/schema/vertexlabels/person
Response Status
1202
Response Body
1{
2    "task_id": 1
3}

注:

可以通过GET http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/tasks/1(其中"1"是 task_id)来查询异步任务的执行状态,更多异步任务 RESTful API