跳转至

REBUILD INDEX

Danger

  • 索引功能不会自动对其创建之前已存在的存量数据生效————在索引重建完成之前,无法基于该索引使用LOOKUPMATCH语句查询到存量数据。
  • 索引的重建未完成时,依赖索引的查询仅能使用部分索引,因此不能获得准确结果。

请在创建索引后,选择合适的时间为存量数据重建索引。使用索引的详情请参见 CREATE INDEX

Performance

通过修改配置文件中的rebuild_index_part_rate_limitrebuild_index_batch_size 两个参数,可优化重建索引的速度,另外,更大参数可能会导致更高的内存和网络占用,详情请参见 Storage服务配置

语法

REBUILD {TAG | EDGE} INDEX [<index_name_list>];

<index_name_list>::=
    [index_name [, index_name] ...]
  • 可以一次重建多个索引,索引名称之间用英文逗号(,)分隔。如果没有指定索引名称,将会重建所有索引。
  • 重建完成后,用户可以使用命令SHOW {TAG | EDGE} INDEX STATUS检查索引是否重建完成。详情请参见 SHOW INDEX STATUS

示例

nebula> CREATE TAG IF NOT EXISTS person(name string, age int, gender string, email string);
nebula> CREATE TAG INDEX IF NOT EXISTS single_person_index ON person(name(10));

# 重建索引,返回任务 ID。
nebula> REBUILD TAG INDEX single_person_index;
+------------+
| New Job Id |
+------------+
| 31         |
+------------+

# 查看索引状态。
nebula> SHOW TAG INDEX STATUS;
+-----------------------+--------------+
| Name                  | Index Status |
+-----------------------+--------------+
| "single_person_index" | "FINISHED"   |
+-----------------------+--------------+

# 也可以使用 SHOW JOB <job_id>查看重建索引的任务状态。
nebula> SHOW JOB 31;
+----------------+---------------------+------------+-------------------------+-------------------------+-------------+
| Job Id(TaskId) | Command(Dest)       | Status     | Start Time              | Stop Time               | Error Code  |
+----------------+---------------------+------------+-------------------------+-------------------------+-------------+
| 31             | "REBUILD_TAG_INDEX" | "FINISHED" | 2021-07-07T09:04:24.000 | 2021-07-07T09:04:24.000 | "SUCCEEDED" |
| 0              | "storaged1"         | "FINISHED" | 2021-07-07T09:04:24.000 | 2021-07-07T09:04:28.000 | "SUCCEEDED" |
| 1              | "storaged2"         | "FINISHED" | 2021-07-07T09:04:24.000 | 2021-07-07T09:04:28.000 | "SUCCEEDED" |
| 2              | "storaged0"         | "FINISHED" | 2021-07-07T09:04:24.000 | 2021-07-07T09:04:28.000 | "SUCCEEDED" |
| "Total:3"      | "Succeeded:3"       | "Failed:0" | "In Progress:0"         | ""                      | ""          |
+----------------+---------------------+------------+----------------------------+----------------------------+-------------+
+----------------+---------------------+------------+-------------------------+-------------------------+-------------+

NebulaGraph 创建一个任务去重建索引,因此可以根据返回的任务 ID,通过SHOW JOB <job_id>语句查看任务状态。详情请参见 SHOW JOB


最后更新: March 28, 2023