ogm.properties配置文件
indexes.auto=none时项目启动不会自动创建节点及索引,而且如果手动执行Cypher,当使用程序添加节点的时候,相应的索引会被覆盖;
indexes.auto=update时,第一次启动项目相应的标签索引都会自动创建,第二次启动会删除索引再新建,则第二次项目启动会报错;
indexes.auto=validate时,每次启动都会检测有无索引,没有则启动报错;
neo4j加载数据:
neo4j多线程批量加载数据效率高,但是会报错Lock,可以在异常的情况下尝试再次添加,每次比上一次睡眠时间多一秒,最多尝试5次,5次后仍然失败则记录到失败表。
public void saveBatchToNeo4j(List dataList) throws Exception {
if (dataList == null || dataList.size() <= 0) {
LOGGER.info("无数据,不存neo4j");
return;
}
for (int i = 0; i < 5; i++) {
try {
//异常后每次重试等待时间延时加1s
if (i > 1) {
Thread.sleep(i * 1000);
}
saveToNeo4j(dataList);
LOGGER.info("第{}次成功", i+1);
break;
} catch (Exception e) {
LOGGER.error("第{}次异常", i+1, e);
if (i == 5 - 1) {
//添加数据到mysql失败表
..........
}
}
}
}