nebula2.5.0,没有原生索引查询全文索引报There is no index to use at runtime

  • nebula 版本:2.5.0
  • 部署方式:单机
  • 是否为线上版本:N
  • 硬件信息:功能验证和硬件无关
  • 问题的具体描述
    在参照官方手册验证全文索引,指定多个属性情况下。
    发现它要有原生索引的情况下才不报错。但原生索引无所谓哪个属性,有就行。
    但删除原生索引后,同样得nGQL就报错了。

是的,准确来说,nebula的text search还算不上全文索引,其开发目的只是为了解决nebula原生索引中关于文本搜索的性能问题(原生索引不是倒排索引,文本搜索性能不行)。

1 个赞

那就是要全文索引必须有原生索引,对吗?这个不是bug就是设计的时候就这么设计?因为我全文索引是在属性name和alias的。但我原生索引我故意放在不相关的age上。

索引选择的优化规则在2.5.0之前的版本有限制,是不允许选择含有无关column的index。在2.5.0中因为兼容count * 等功能,对索引的选择限制放宽了。虽然放宽了一些执行限制,但用户可以根据profile查看执行计划,自行进行调优。
根据以上的例子,在age上创建索引的话效率会很低(full index scan);如果在name上创建索引,并结合text search,效率会有很大提升。

1 个赞

因为你们说原生索引会降低写效率,导致我们生产不想用原生索引。通过导入前删除原生索引,然后导入完后重建rebuild也不现实,我们系统是实时导入更新的,而且会有阶段性的大批量导入,其次数据量太大,重建过程中会导致系统有些功能无法查询。所以我们就想不要原生索引,只要全文索引。但听您的意思,是不是全文索引也和原生索引一样会大大降低写性能。还有这个索引对写性能 那么大的影响(官方说可能下降90%甚至更多)这块有更好的建议吗?不然感觉我们这个生产没法用起来这个索引。

任何数据库,加入索引后写性能都会降低,降低多少是和现场的业务环境和索引结构有关系。我建议还是实际测试一下吧,看看实时写入性能是否能达到项目要求。

浙ICP备20010487号