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

按文档解释,无论是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 个赞