使用 LOOKUP 查询时,IndexNotFound: No valid index found

嗨~ 我想请问一下关于 IndexNotFound: No valid index found 的问题。

  • nebula 版本:2.0.0 rc
  • 部署方式: Docker

我通过 VertexID 查询 entity.name 属性的时候,是有值的,如下图所示:

但是当我用 LOOKUP 去查询 entity.name 对应的 VertexID 时,就显示:

image

我又按照官网的示例试了一下重新创建索引然后 LOOKUP,一样的语句和流程,但是还是显示 IndexNotFound: No valid index found,如下图所示:

请问一下有人知道怎么解决这个问题吗~~谢谢!

使用lookup语句需要创建索引: https://docs.nebula-graph.com.cn/manual-CN/2.query-language/4.statement-syntax/1.data-definition-statements/


你这里只是创建了space 和 tag,并没有创建索引哦

按文档解释,无论是MATCH还是LOOKUP都只能对已建立的索引进行过滤。那么有两个问题:
1、如果建立了两个单属性索引,能同时对这两个属性进行过滤吗?能的话是如何使用索引的?
2、当前的这种设置不支持属性扫描过滤操作,但现实使用场景很多,比如节点属性很多,我可以对其中一些关键字段建索引,LOOKUP出一个子集后,再根据某些字段进行扫描过滤。这个在后续版本迭代中有可能支持吗?

按文档解释,无论是MATCH还是LOOKUP都只能对已建立的索引进行过滤。那么有两个问题:
1、如果建立了两个单属性索引,能同时对这两个属性进行过滤吗?能的话是如何使用索引的?
回答,因为nebula的索引是左匹配索引,如果这个tag有两个属性c1 和 c2 ,如果对c1 和 c2分别创建了索引,那么查询的时候需要分别查询这两个索引,如果是OR操作,可以将结果集做union;如果创建的索引包含c1 , c2,那么这个索引即可以过滤c1和c2,也可以单独过滤c1;如果创建的索引包含c2,c1, 那么这个索引既可以过滤c1和c2,也可以对c2进行单独过滤。
2、当前的这种设置不支持属性扫描过滤操作,但现实使用场景很多,比如节点属性很多,我可以对其中一些关键字段建索引,LOOKUP出一个子集后,再根据某些字段进行扫描过滤。这个在后续版本迭代中有可能支持吗?
回答,这个功能是在计划中的,比如tag(c1, c2, c3) , 那么如果只对c1 做了索引,那么底层将按照c1的条件扫描出一个结果集,然后再通过c2和c3将这个结果集进行进一步的过滤,最终得出最终结果集。但是这个场景下,查询效率肯定比对c1,c2,c3全部创建索引的效率要低。
[/quote]

3 个赞

首先感谢详尽的回答!
1、“如果是OR操作,可以将结果集做union”,如果是AND,也可以自动通过两个索引取交集吧?
2、“查询效率肯定比对c1,c2,c3全部创建索引的效率要低。”,理解,扫描操作肯定效率低,但如果没有这个功能,就只能客户端取回后再过滤,比较浪费带宽。另外如果还要查过滤后的nHOP,就需要再把VID传回来二次查询,这个需要额外编码,对数据探索的效率影响比较大。如果能支持的话就可以直接用管道操作了。我们团队目前在选型图库,性能上Nebula是一流的,但这个功能对我们来说几乎是必须的。

感谢您的试用,我们将尽快落地这个功能。

1 个赞

计划会落在2.0吗?

你好, @bright-starry-sky的意思是只建立2个单独索引的前提下, 如果有使用or关键字复合查询的时候可以用union代替, and关键字是不支持的, 只有建立复合索引才能用正常的and, or

假如现在只有2个单独的索引, 但是需要这2个共同过滤查询, 你是怎么写管道符查询的?? 能发出来看下嘛?

你们测试是和那款图数据库对比测试的?? 为啥我同neo4j测试的是没有比过neo4j的, 甚至差距有点大

你好,
假如有2个单独字段索引, 怎么写 “|” 复合查询使用2个字段共同过滤呢?? 那个复合索引不好用啊, 还必须最左原则, 假如我创建了3个字段的复合索引, 但是我就想使用p2, p3来过滤, 怎么办? 又得建立一个以p2最左的索引吗???, 如果一个tag有很多属性字段, 查询又是很灵活多变, …
image

我也遇见类似问题 ,官方建议创建复合索引,多个字段 位置不同 分别创建一个复合索引

你现在是怎么解决的呢?

创建的复合索引 你看下我的帖子

我其实不想创建复合索引, 就想单个创建, 写复合语句, 但是复合查询的语句我还不会写 :joy:

关键也是查询灵活多变, 这个最左原则有点限制

强烈建议改进啊, 这个真别扭

2 个赞

可以去github上提个需求吗?稍后会讨论一下,看如何解决这个问题,提需求的时候把这个帖子的link最好也贴上去。谢谢。

这个问题关系到下推的问题。现在使用nebula最主要的两个问题就是多条件查询和大数据量返回(limit)

已经提了小建议, 感谢

看到了,感谢。