我的Neo4j探索之旅 - 安装Apoc插件以及JAVA集成(二)

简介: 我的Neo4j探索之旅 - 安装Apoc插件以及JAVA集成(二)

如何安装neo4j - apoc 插件



有英语阅读能力建议参考官方文档:neo4j.com/developer/n…


1. 下载neo4j - apoc 插件


进入github : github.com/neo4j-contr…

找到和当前neo4j 匹配的版本, 我选择3.5.0.12 的版本

这里提供我的:

链接:pan.baidu.com/s/1Tb7f-bYj…提取码:bzwh


2. 具体的安装步骤



  1. 下载好之后,放入到 D:\zxd\tool\neo4j-community-3.5.12-windows\neo4j-community-3.5.12\plugins 下面
  2. 执行neo4j stop,关闭neo4j 服务
  3. 进入 ~/conf 下面,找到neo4j.conf ~表示你的neo4j 安装位置
  4. 修改#dbms.security.procedures.whitelist=apoc.coll.*,apoc.load.* 在这一行的下面增加dbms.security.procedures.unrestricted=apoc.*的配置,安装apoc插件


下面的图看起来就像这样:

#dbms.security.procedures.whitelist=apoc.coll.,apoc.load.dbms.security.procedures.unrestricted=apoc.*


网络异常,图片无法展示
|


  1. 输入 neo4j start 启动neo4j 服务
  2. 在可视化界面,输入return apoc.version() ,如果报错说明没安装对,显示如下页面,证明apoc 插件安装成功


网络异常,图片无法展示
|


Neo4j 集成到java里面



1. 配置maven,加入依赖


<!-- neo4j 依赖包 -->
<dependency>
    <groupId>org.neo4j.driver</groupId>
    <artifactId>neo4j-java-driver</artifactId>
    <version>1.5.0</version>
</dependency>
复制代码


2. 使用neo4j 集成java实战


这是之前实战的是用的方式,这里说下我大致的设计记录

需求:


  1. neo4j 实现插拔式配置,没有配置的情况下进行连接不会影响程序运行
  2. 所有的配置都需要放在application_setting.xml当中
  3. 如果连接neo4j 失败,不做处理


抽象接口


core 包里面, 设计公用开放接口。


/**
     * 构建neo4j url地址
     * @return
     */
    String buildUrl();
    /**
     * 构建neo4j 用户名
     * @return
     */
    String buildUsername();
    /**
     * 构建neo4j 密码
     * @return
     */
    String buildPassword();
    /**
     * 构建neo4j 配置, 目前使用默认 配置
     * @return
     */
    Config buildConfig();
    /**
     * 是否开启自定义配置
     * @return
     */
    boolean enableCustomConfig();
    /**
     * 构建 Neo4j csv同步地址的前置
     * 默认为 file:///
     *
     * @return
     */
    String buildCvsPrefix();
    /**
     * 构建 neo4j csv同步的普通标签文件名
     * @return
     */
    String buildNormalTagSyncFileName();
    /**
     * 构建 neo4j csv同步的业务标签文件名
     * @return
     */
    String buildBusinessTagSyncFileName();
    /**
     * 构建 neo4j csv同步的用户标签文件名
     * @return
     */
    String buildUserTagSyncFileName();
    /**
     * 普通标签和业务标签的关联csv文件名称
     * @return
     */
    String buildNormalTagBizSyncFileName();
    /**
     * 普通标签和用户标签的关联csv文件名称
     * @return
     */
    String buildNormalTagUserSyncFileName();
    /**
     * 业务标签和用户标签的关联csv文件名称
     * @return
     */
    String buildBizTagUserSyncFileName();
    /**
     * 主题分类(业务)标签子父关联csv文件名称
     * @return
     */
    String buildBizChildSyncFileName();
    /**
     * 普通标签标签子父关联csv文件名称
     * TODO: 目前普通标签没有子父关联关系,后续需要拓展请开放此接口 by zhaoxudong
     * @return
     */
//    String buildNormalChildSyncFileName();
    /**
     * 用户标签的子父关联csv文件名称
     * @return
     */
    String buildUserChildSyncFileName();
复制代码


具体实现


maven的其他项目工程,只要实现了上面的接口,就可以根据自己的设定去设置如何读取配置,下面给出案例


@Override
    public String buildUrl() {
        return Setter.getString("neo4j.address");
    }
    @Override
    public String buildUsername() {
        return Setter.getString("neo4j.username");
    }
    @Override
    public String buildPassword() {
        return Setter.getString("neo4j.password");
    }
    @Override
    public Config buildConfig() {
        return Config.defaultConfig();
    }
    @Override
    public boolean enableCustomConfig() {
        return Setter.getBoolean("neo4j.enablecustomconfig");
    }
    @Override
    public String buildCvsPrefix() {
        return Setter.getString("neo4j.datasyncprefix");
    }
    @Override
    public String buildNormalTagSyncFileName() {
        return Setter.getString("neo4j.normaltagsyncfilename");
    }
    @Override
    public String buildBusinessTagSyncFileName() {
        return Setter.getString("neo4j.businesstagsyncfilename");
    }
    @Override
    public String buildUserTagSyncFileName() {
        return Setter.getString("neo4j.usertagsyncfilename");
    }
    @Override
    public String buildNormalTagBizSyncFileName() {
        return Setter.getString("neo4j.normalbizsyncfilename");
    }
    @Override
    public String buildNormalTagUserSyncFileName() {
        return Setter.getString("neo4j.normalusersyncfilename");
    }
    @Override
    public String buildBizTagUserSyncFileName() {
        return Setter.getString("neo4j.bizusersyncfilename");
    }
    @Override
    public String buildBizChildSyncFileName() {
        return Setter.getString("neo4j.bizrelsyncfilename");
    }
    @Override
    public String buildUserChildSyncFileName() {
        return Setter.getString("neo4j.userrelsyncfilename");
    }
复制代码


结合到neo4j 连接


  1. 根据上面两个步骤, ssm项目启动之后,会自动装载BEAN, 装载之后,只要在具体的程序里面,拿取配置即可(具体的配置获取实现可以由自己实现)
  2. 根据上面的方法使用java拿到xml配置之后,就实现了下面的方式实现neo4j 的数据连接


/**
     * 连接图数据库
     * @return
     */
private void createDriver(Neo4jConfigBuilder builder) {
    if(driver == null){
        try{
            driver =  GraphDatabase.driver(builder.buildUrl(), AuthTokens.basic(builder.buildUsername(), builder.buildPassword()));
        }catch(Exception e){
            driver = null;
            LOGGER.debug("无法建立图数据库连接,请检查图Neo4j 服务是否启动");
            throw new RuntimeException("无法建立图数据库连接,请检查图Neo4j 服务是否启动");
        }
    }
}
复制代码


具体开发


/**
     * 执行添加cql
     *
     * @param cql 查询语句
     */
    @Override
    public StatementResult run(Neo4jConfigBuilder builder,String cql) {
        createDriver(builder);
        Session session = driver.session();
        StatementResult run = null;
        try {
            run = session.run(cql);
        }catch (Exception e){
            e.printStackTrace();
        } finally {
            if(session!=null){
                session.close();
            }
        }
        return run;
    }
    @Override
    public StatementResult run(Neo4jConfigBuilder builder,String cql, Object... objects) {
        createDriver(builder);
        Session session = driver.session();
        StatementResult run = null;
        try {
            run = session.run(cql, Values.parameters(objects));
        }catch (Exception e){
            e.printStackTrace();
        } finally {
            if(session!=null){
                session.close();
            }
        }
        return run;
    }
复制代码


曾经开发的时候查找的一些博客记录:


NEO4J的安装配置及使用总结

neo4j︱neo4j批量导入neo4j-import (五)

neo4j - 查询效率的几种优化思路

Neo4j如何对大量数据(千万节点及以上)进行初始化

关于Neo4j和Cypher批量更新和批量插入优化的5个建议

Neo4j的查询速度为何这么慢?这能商用吗?

Neo4j清空所有数据

Neo4j安装APOC和图算法Neo.ClientError.Procedure.ProcedureRegistrationFailed?

官方网站对于Apoc插件的介绍

neo4j cypher 语言的语法(非常非常重要):

neo4j--Cypher语法练习(START、CREATE、MERGE)

Neo4j中使用Cypher进行大批量节点删除的优化

thinbug  我的很多前端疑难杂症就是靠这网站解决的

相关文章
|
12天前
|
JavaScript 前端开发 持续交付
Prettier 高级应用:集成 CI/CD 流水线与插件开发
【10月更文挑战第18天】Prettier 是一款流行的代码格式化工具,它能够自动将代码格式化成一致的风格,从而提高代码的可读性和维护性。对于希望进一步发挥 Prettier 潜力的高级用户而言,将 Prettier 集成到持续集成(CI)和持续部署(CD)流程中,确保每次提交的代码都符合团队标准,是非常重要的。此外,通过开发自定义插件来支持更多语言或扩展 Prettier 的功能也是值得探索的方向。本文将详细介绍这两方面的内容。
32 2
|
5天前
|
Java Linux Windows
如何查看已安装的 Java 版本
要查看已安装的 Java 版本,打开命令提示符或终端,输入 `java -version`,回车后即可显示当前系统中 Java 的版本信息。
|
28天前
|
Oracle Java 关系型数据库
在 Debian 12 上安装 Java 21
在 Debian 12 上安装 Java 21
|
28天前
|
IDE Java 编译器
java编译器的安装/环境变量的配置
java编译器的安装/环境变量的配置
30 0
|
30天前
|
Oracle IDE Java
IDEA安装教程配置java环境(超详细)
IDEA安装教程配置java环境(超详细)
|
4月前
|
监控 druid Java
spring boot 集成配置阿里 Druid监控配置
spring boot 集成配置阿里 Druid监控配置
266 6
|
4月前
|
Java 关系型数据库 MySQL
如何实现Springboot+camunda+mysql的集成
【7月更文挑战第2天】集成Spring Boot、Camunda和MySQL的简要步骤: 1. 初始化Spring Boot项目,添加Camunda和MySQL驱动依赖。 2. 配置`application.properties`,包括数据库URL、用户名和密码。 3. 设置Camunda引擎属性,指定数据源。 4. 引入流程定义文件(如`.bpmn`)。 5. 创建服务处理流程操作,创建控制器接收请求。 6. Camunda自动在数据库创建表结构。 7. 启动应用,测试流程启动,如通过服务和控制器开始流程实例。 示例代码包括服务类启动流程实例及控制器接口。实际集成需按业务需求调整。
324 4
|
4月前
|
消息中间件 Java 测试技术
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
290 1
|
5月前
|
消息中间件 Java Kafka
springboot集成kafka
springboot集成kafka
165 2
|
4月前
|
消息中间件 Java Kafka
Spring Boot与Apache Kafka Streams的集成
Spring Boot与Apache Kafka Streams的集成