neo4j创建索引失败

前几天准备做一个问答系统,所以要搭一个neo4j的图数据库,用的数据是北大他们和别人一起提供的。但是大量庞杂的数据避免不了"脏数据"这件事,在使用neo4j-import进行批量导入的时候可能会有很多数据会影响后面的索引建立,带来很难查出的麻烦,我查了几天,有以下几种情况会导致建立索引失败:
(建立索引语句:create index on:Instance(name))
1.含有重复实体(不是我遇到的问题)
批量导入的时候没有注意跳过重复实体。通过查询语句在页面上找出对应id删除即可

2.实体或属性中含有特殊字符,转义符等。(不是我遇到的问题,待验证)

3.实体的属性长度过长。(我遇到的情况)
如上述我在建立的是instance实体的name属性,但是如果这个“name”过长,就会建立index失败。在查问题的时候,其实最应该关注的就是报错信息。
进入服务器中neo4j所在的文件夹,找到logs文件夹,里面有debug.log文件,查看一下里面的信息(他这个记录的时间和我的时间对不上,这也导致了我第一次怀疑的时候看时间戳不对所以以为没有错误记录,就退出去了,真的坑了我…时间不一致的问题似乎网上也有很多人遇到过,所以看看详细信息再走啊!!!)

2020-07-10 05:36:59.538+0000 INFO [o.n.k.i.a.i.IndexPopulationJob] Index population started: [:Instance(name) [provider: {key=native-btree, version=1.0}]]
2020-07-10 05:39:26.544+0000 ERROR [o.n.k.i.a.i.IndexPopulationJob] Failed to populate index: [:Instance(name) [provider: {key=native-btree, version=1.0}]] java.lang.IllegalArgumentException: Index key-value size it to large. Please see index documentation for limitations. | GB+Tree[file:/home/LAB/3.5.14/neo4j-community-3.5.14/data/databases/graph.db/schema/index/native-btree-1.0/1/index-1, layout:GenericLayout[version:0.5, identifier:5643935348791705600, fixedSize:false], generation:2/4]
java.lang.RuntimeException: java.lang.IllegalArgumentException: Index key-value size it to large. Please see index documentation for limitations. | GB+Tree[file:/home/LAB/3.5.14/neo4j-community-3.5.14/data/databases/graph.db/schema/index/native-btree-1.0/1/index-1, layout:GenericLayout[version:0.5, identifier:5643935348791705600, fixedSize:false], generation:2/4]
at org.neo4j.kernel.impl.index.schema.WorkSyncedNativeIndexPopulator.add(WorkSyncedNativeIndexPopulator.java:98)

这个记录就是在debug.log里的内容。可以看到开头是Index population started: [:Instance(name)正是我们要做的操作,下面的报错说应该将key-value的size加大,这个我没找到在哪加的,不过我的目的在数据涉及到很长的结果的几乎没有,在建立index时失败的记录下面也已经指出在neo4j-community-3.5.14/data/databases/graph.db/schema/index/native-btree-1.0/1/index-1这个文件夹里,可以去按照地址查看一下具体的出错数据是什么,我当时看了一下,的确是有一个非常长的实体,可能这就是导致错误的原因,因此在建立数据集用于批量导入的时候我就把他们单独拎出来了,其实建立索引是为了加速查询,但这种比较长的,建立不了索引的可以在标记他们的属性时换一个属性名如description等,把他们和一般的常见短实体分开处理。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值