REBUILD INDEX

Danger

索引功能不会自动对其创建之前已存在的存量数据生效————在索引重建完成之前,无法基于该索引使用LOOKUPMATCH语句查询到存量数据。

重建索引期间,所有查询都会跳过索引并执行顺序扫描,返回结果可能不一致。

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

语法

  1. REBUILD {TAG | EDGE} INDEX [<index_name_list>];
  2. <index_name_list>::=
  3. [index_name [, index_name] ...]
  • 可以一次重建多个索引,索引名称之间用英文逗号(,)分隔。如果没有指定索引名称,将会重建所有索引。

  • 重建完成后,用户可以使用命令SHOW {TAG | EDGE} INDEX STATUS检查索引是否重建完成。详情请参见SHOW INDEX STATUS

示例

  1. nebula> CREATE TAG person(name string, age int, gender string, email string);
  2. nebula> CREATE TAG INDEX single_person_index ON person(name(10));
  3. # 重建索引,返回任务ID。
  4. nebula> REBUILD TAG INDEX single_person_index;
  5. +------------+
  6. | New Job Id |
  7. +------------+
  8. | 31 |
  9. +------------+
  10. # 查看索引状态。
  11. nebula> SHOW TAG INDEX STATUS;
  12. +-----------------------+--------------+
  13. | Name | Index Status |
  14. +-----------------------+--------------+
  15. | "single_person_index" | "FINISHED" |
  16. +-----------------------+--------------+
  17. # 也可以使用SHOW JOB <job_id>查看重建索引的任务状态。
  18. nebula> SHOW JOB 31;
  19. +----------------+---------------------+------------+-------------------------+-------------------------+
  20. | Job Id(TaskId) | Command(Dest) | Status | Start Time | Stop Time |
  21. +----------------+---------------------+------------+-------------------------+-------------------------+
  22. | 31 | "REBUILD_TAG_INDEX" | "FINISHED" | 2021-07-07T09:04:24.000 | 2021-07-07T09:04:24.000 |
  23. | 0 | "storaged1" | "FINISHED" | 2021-07-07T09:04:24.000 | 2021-07-07T09:04:28.000 |
  24. | 1 | "storaged2" | "FINISHED" | 2021-07-07T09:04:24.000 | 2021-07-07T09:04:28.000 |
  25. | 2 | "storaged0" | "FINISHED" | 2021-07-07T09:04:24.000 | 2021-07-07T09:04:28.000 |
  26. +----------------+---------------------+------------+-------------------------+-------------------------+

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

历史版本兼容性

在Nebula Graph 2.0中,不需要也不支持选项OFFLINE


最后更新: October 27, 2021