同步数据后index不生效,rebuild了也不行,match和lookup都查不出结果

  • nebula 版本:3.3.0
  • 部署方式:分布式
  • 安装方式:RPM
  • 是否上生产环境:N
  • 硬件信息
    • 磁盘( 推荐使用 SSD)
    • CPU、内存信息
  • 同步数据后index不生效,rebuild了也不行,match和lookup都查不出结果,没有相关日志报错,服务状态正常,机器资源正常

rebuild job finished 了么?

是的,job状态确认了的

贴一下相关信息?

  • show create index
  • match/lookup query
  • query 的 profile

index:


query:
match (v:label) return v limit 5
LOOKUP ON label WHERE label.original_id == “{label_id}” YIELD id(vertex) as vid
都不行
match query profile结果:
AppendVertices环节之后就没有结果了,之前scanVertices或者是走索引找,都有正常的结果条数

目前确定了问题是同步数据时对数据文本特殊符号转义错误导致,

replace('\n', '\\n')

导致的问题,但是不知道为什么会导致nebula出现这种问题,还在定位

1 个赞

这个问题本身应该是小数点在nebula中使用的问题,我们转义了小数点同步进去导致了问题,请问带小数点的数据该如何同步进nebula,转义已经证明不行了,进行编码我们又不太愿意因为一个小数点问题编码解码全部数据,小数点数据在日常也比较常见,这个问题亟待一个合适的解决方案

value 中的小数点?小数点从来都不需要转义的

(root@nebula) [demo_basketballplayer]> INSERT VERTEX player(name, age) values "player10000":("A. B. Tom", 21)
Execution succeeded (time spent 2.013ms/3.5565ms)

Mon, 04 Sep 2023 15:30:36 CST

(root@nebula) [demo_basketballplayer]> LOOKUP ON player WHERE player.name == "A. B. Tom" YIELD vertex AS v
+-----------------------------------------------------+
| v                                                   |
+-----------------------------------------------------+
| ("player10000" :player{age: 21, name: "A. B. Tom"}) |
+-----------------------------------------------------+
Got 1 rows (time spent 2.858ms/5.808666ms)

Mon, 04 Sep 2023 15:31:04 CST

是schema中的。类似这种
image
tag名或者属性名带小数点的,我们这边是把用户构造的一些概念同步进来,有些名称或者属性会有小数点

如果是 schema 相关的话,可以试试用驼峰命名,不要用 .,而是 nameTest 之类的。这样就能规避掉相关的问题。

嗯嗯,从一个版本开始,prop name 的点不再允许了,之前的实现做了一些假设使得点存在的话会有一些问题,嗯嗯,也是建议做一些转换比如驼峰或者下划线

因为是用户数据,不是很好去让用户改,目前是先转换成其他非敏感字符读取的时候再转回来,因为我们的平台上用户会构建层级,这些抽象的层级我们目前会构建在schema里,而小数点在多数时候都不会作为敏感词限制,导致现在同步带nebula出现这种问题。想问一下为什么nebula schema里不能有小数点,不能用其他符号把常用的小数点释放出来么?

了解了,那目前看还是转换成其他字符存进去比较合适

嗯嗯原因还是因为表达式里 dot 有层级的语义,有时候 dot 是 x.y 有时候是 x.y.z 的形式,目前的表达里只能假设 key 中不带 dot

1 个赞