match 带条件查询报错:IndexNotFound: No valid index found

  • nebula 版本:2022.06.26-nightly
  • 部署方式:单机
  • 安装方式:Docker
  • 是否为线上版本:Y / N

具体问题:

无属性索引的时候,在没有指定条件的时候,可以通过 数据扫描的sample 下推去扫得 limit 的数据,而带有filter 条件时候,就需要全扫描才行,这个情况在nebuka里是被禁止的,所以需要创建这个tag 上的索引才能这么查询

这里我有介绍一下 Nebula Graph 索引详解 - siwei.io

文档里也有一些解释

那不是每个tag上的属性都需要创建索引?

只有有从属性反查 vid 的情况才需要索引,如果查询的起点能够知道 vertexID,是不需要的

没懂,知道vertexID了去查询的场景很少吧?查询语句里面有了tag,直接从这个tag里面检索不行吗?另外请问有官方交流群吗?

有的哈,@Lisa 知道怎么拉您

好的,拉人麻烦私信哈。另外麻烦帮忙答疑一下我的问题

只有不得不需要从属性查vid的 tag 才需要创建索引哈。
我那个文章里有解释这个问题哈,如果是从 tag 里随机 sample 几个出来,是不需要索引的,但是只要有了过滤条件,就必须全扫描才能做到了,这在分布式的数据库里是很昂贵的,所以 nebula 强制要求必须建立根据属性排序的索引(才能避开全扫描)才允许。

好的,谢谢。我先从您发的文章看看再理解一下哈

1 个赞

对于每个tag的数据如果需要走属性条件查询只需要一个属性加了索引,其他的不加也可以加属性过滤查询?

嗯嗯,还是看你可能会写的查询条件涉及那些属性,其实顺序也是相关的,尽量让,因为是 prefix scann 左匹配,如果涉及到多条件结合的时候,尽量让需要单独查询条件的属性在左边哈。

如果只涉及到一个属性的反查 vid,那么就只创建它一个的索引。

这个索引只和起点相关,如果起点已经确定了,图拓展过程中的属性过滤不涉及这个索引哈。

3q

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