java-client REBUILD index不生效

提问参考模版:

  • nebula 版本:1.2
  • 部署方式(分布式 / 单机 / Docker / DBaaS):分布式
  • 问题的具体描述
    java-client的GraphClientImpl的execute方法创建index然后rebuild,index不生效,控制台的方式可以生效。
    通过java-client执行的命令:
CREATE TAG INDEX entity_entity_id_index on entity(entity_id); 
CREATE TAG INDEX oneDimBlc_oneDim_index on oneDimBlc(oneDim); 
CREATE EDGE INDEX Is_OneDim_Blc_weight_index on Is_OneDim_Blc(weight); 
REBUILD TAG INDEX entity_entity_id_index OFFLINE; 
REBUILD TAG INDEX oneDimBlc_oneDim_index OFFLINE; 
REBUILD EDGE INDEX Is_OneDim_Blc_weight_index OFFLINE; 

之后,在控制台执行:

你好,rebuild index是异步操作的,你提交了rebuild这个任务,不代表它立即完成。 你通过console,执行完rebuild之后,再执行lookup这中间是有几十秒以上的时间间隔的,这个过程对于少量数据是足够rebuild完,但是你用java client,这个就不一样了,你两条命令的执行间隔是立即的,rebuild还没完成,就去查,肯定查不到,还有,你rebuild完,也需要查询下状态确认finish才能去查数据。

查询rebuild是否完成是哪个命令?SHOW TAG INDEX STATUS;是这个吗?

是的

还是有问题,用java-client执行了rebuild,查看index状态是成功的,但是查不出来数据,然后在控制台手动执行命令,在查询就可以了:

是通过java-client执行rebuild,过了一段时间了,在console端执行命令,查看index状态是成功的,但是在console查不出来数据

你可以多试几个,看每次都是这样吗?在服务端看到,通过console和java client去执行rebuild命令是一样的,服务端都是一样的执行的,跟客户端没有关系。你现在index状态是成功的,但是查不出来,应该就是rebuild index的实现有问题。