nebula2.5索引问题

  • nebula 版本:2.5.0
  • 部署方式:分布式 / 单机
  • 安装方式:RPM
    问题一:
    创建索引时,提示已经存在,删除时提示不存在,show的时候并没有,如下图

问题二:match的时候索引问题,一个顶点创建了3个属性的组合索引,如果在where条件中,没有组合索引的第一个属性,查询就会报No valid index found

请问show indexes 命令展示的时候,也是看不到这个索引是吧

是的

show tag indexes看看
问题二:这个是复合索引的左匹配原则,看下: CREATE INDEX - Nebula Graph Database 手册

第二个确实是选不到组合索引,但是不应该报错

第一个问题,可能是 create index 和 drop index 的检查机制不同,前者检查属性名,后者检查索引名。
我本地是这样复现类似现象的:


这个确实看上去有点迷惑。

第二个问题报错提示如下图

嗯,这个是已知问题。关注一下 issue
https://github.com/vesoft-inc/nebula/issues/3246

那这个问题该怎么解决?假如现在就是要在这个字段上创建索引,但是现在是一直创建不上的。

现在需求就是这样,如果一个顶点建了5个属性,每个属性都是要进行查询,但是现在这种情况就是,如果所有属性建一个组合索引,查询的时候就会有问题。怎么去避免这种问题?

那个“Existed”错误不够友好,但它的意思是该字段上已经建过索引了,你show tag indexes检查下?
目前情况下如果你5个属性都要建索引,组合索引根据需要来建。

2 个赞

索引创建不了这个能详细描述下你的复现步骤吗?

和你本地测试的基本一致。

我本地是故意那样测的,用一致的索引名就不会有问题。

如图

今天测试索引的时候又发现了一个问题,
比如,一个顶点,本身只有2个属性,然后建立索引,导入2条数据,使用语句match (v:pin) return v 能返回2条数据,然后给顶点新增一个属性,插入一条带三个属性的数据,通用的语句,结果返回正常三条数据,然后给新增加的属性建一个索引,rebuild索引后,使用同样的match (v:pin) return v语句查询,此时只能返回最后导入的那一条数据。前两天数据就没返回了。

稳定复现吗?把复现过程中具体的语句贴上来看看

按照流程测试就可以复现了。很容易复现的,语句基本就是创建顶点,创建索引,rebuild索引,插入数据,修改顶点等基本操作语句。

嗯,了解。这些基本操作语句 CI 上都会有相应的测例,如果是 bug 的话提供具体的复现环境、数据和语句是必要的,这样也方便我们定位原因。

1 个赞

从这个截图看上去像是个bug @kyle