1.索引问题
space里创建了一个Tag比如:person(name string, age int);
索引为 create tag index t1 on person(name);
执行以下lookup语句报错[ERROR (-8)]: Unknown error(411)
lookup on person where person.name = ‘test’ or person.age = 0;
看之前论坛帖子说是age没加索引的原因,这里为什么限制所有的字段都要加索引,只要name加索引取对应记录后按age过滤不行吗?
- 沿着多种类型的边遍历结果形式
按照文档试验, 如果存在多条边的属性需要返回,会把他们放在不同的行。
这样在很多场景很麻烦,比如一个User关联Friend/Teacher等实体,现在一次性取出User本身的属性及关联实体
go from 100 over friend,teacher yield $^.User.id,$$.Friend.id,$$.Daughter.id
由于返回结果在不同行,还需要将其两行合并起来
参考neo4j中做法,使用COLLECT来聚合,一次性取出很简洁
match (n:User)-[:friend|:teacher]->(d) where id(n)=100 return n.gid,COLLECT(d.gid);
3.graphstudio导入成功但是显示404配置错误
操作正常,也有数据,但是返回这个提示,很奇怪
这里为什么限制所有的字段都要加索引,只要name加索引取对应记录后按age过滤不行吗
where 里面用到的属性就是全部需要建立索引的
按照文档试验, 如果存在多条边的属性需要返回,会把他们放在不同的行
没明白你的意思,你可以把你完整的nsql发出来
由于返回结果在不同行,还需要将其两行合并起来
多条边的时候是一次性取出起点,边以及终点的所有属性的,直接在YIELD 子句将要的属性平铺拿就可以
3.graphstudio导入成功但是显示404配置错误
这个之前也有人提过了,负责的同事已经在查并解决,感谢您提的问题。
感谢回复
1.索引难道不只是为了加快查询吗,在已经有一个字段name加索引,另一个字段取值范围有限的场景下比如人的性别gender属性,完全可以不加索引,就算加了索引,优化器不也应该优先走name查询吗。
这种情况就没必要浪费空间对每个实体加gender索引了。
2.分两种情况
【1】查询单条边
比如查询User关联的所有Friend,如下
nebula> lookup ... | go from $-.uservid over friend yield $^.User.id,$$.Friend.id
返回如下结果:
====================================
| User.id | Friend.id |
====================================
| 99 | 31 |
------------------------------------
| 99 | 32 |
------------------------------------
| 100 | 95 |
------------------------------------
| 100 | 89 |
------------------------------------
| 100 | 90 |
------------------------------------
这样的结果还需要人为去按User.id合并,能否直接返回如下形式
====================================
| User.id | Friend.id |
====================================
| 99 | 31,32 |
------------------------------------
| 100 | 95,89,90 |
------------------------------------
对应如下查询语句
nebula> lookup ... | go from $-.uservid over friend yield $^.User.id, COLLEC[$$.Friend.id]
【2】查询多条边
如果存在多条边的属性需要返回,会把他们放在不同的行。比如:
nebula> GO FROM 100 OVER follow, serve YIELD follow.degree, serve.start_year;
返回如下结果:
====================================
| follow.degree | serve.start_year |
====================================
| 0 | 1997 |
------------------------------------
| 95 | 0 |
------------------------------------
| 89 | 0 |
------------------------------------
| 90 | 0 |
------------------------------------
能否直接返回如下形式
====================================
| follow.degree | serve.start_year |
====================================
| [95.89,90] | 1997 |
感谢您的试用,您所说的功能会在Nebula2.0中支持。
你好关于第 3 个问题,可以给一下复现的步骤么?因为我这边试了几次导入都是成功的,你那边是稳定会报这个错么?
是的 就是按照官网步骤导入 一直报404错 我是docker环境
索引对于查询性能没有任何帮助? 我这里就是不想给age加索引啊 但是现在的要求是age必须加上索引才能用在where语句中判断
因为这里索引的目的是为了根据属性查VID,不是为了性能。