nebula NQL 使用 where过滤时,报如下错误

nebula 版本 3.5.0


但是使用and的时候,报错:Error found in optimization stage: IndexNotFound: No valid index found

正常使用and进行筛选时,应该输出结果的

这个问题应该是一个已知问题,有些历史的原因导致这里表达式上的行为有些令人费解,我这里简答解释一下:

第一条 query 能够执行是因为语句走了“扫点”再过滤的计划。

第二条 query 报错的原因是因为语句期望走扫索引的逻辑,但是在优化阶段找索引时没有找到可用的索引,然后抛出错误。

这里说历史原因是,最早的时候除却 id 的方式外,nebula 只支持通过属性索引拿点边的数据,不能全盘扫(分布式原因)。这块找索引的逻辑做在了生成计划的阶段,后来加入优化器的时候又将这块的逻辑挪到了优化阶段,所以看到了错误是在优化阶段抛出。

上面的逻辑变更之后,生成计划的部分没有很好的做适配。这里目前只能通过给 player 创建一个索引来规避这个问题。后面等支持了 GQL 之后这种问题就不会存在了。

3 个赞

此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。