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

简介: 在可视化界面,输入return apoc.version() ,如果报错说明没安装对,显示如下页面,证明apoc 插件安装成功

上一篇文章:


不知道为什么我发不出文章,找不到那里违规了,上一篇文章我发布到思否了:


segmentfault.com/a/119000003…


如何安装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. 具体的安装步骤


2.下载好之后,放入到 D:\zxd\tool\neo4j-community-3.5.12-windows\neo4j-community-3.5.12\plugins 下面

3.执行neo4j stop,关闭neo4j 服务

4.进入 ~/conf 下面,找到neo4j.conf ~表示你的neo4j 安装位置

5.修改#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.*


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


6.输入 neo4j start 启动neo4j 服务

7.在可视化界面,输入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  我的很多前端疑难杂症就是靠这网站解决的

相关文章
|
5月前
|
人工智能 Java API
Java与大模型集成实战:构建智能Java应用的新范式
随着大型语言模型(LLM)的API化,将其强大的自然语言处理能力集成到现有Java应用中已成为提升应用智能水平的关键路径。本文旨在为Java开发者提供一份实用的集成指南。我们将深入探讨如何使用Spring Boot 3框架,通过HTTP客户端与OpenAI GPT(或兼容API)进行高效、安全的交互。内容涵盖项目依赖配置、异步非阻塞的API调用、请求与响应的结构化处理、异常管理以及一些面向生产环境的最佳实践,并附带完整的代码示例,助您快速将AI能力融入Java生态。
845 12
|
6月前
|
人工智能 自然语言处理 分布式计算
AI 驱动传统 Java 应用集成的关键技术与实战应用指南
本文探讨了如何将AI技术与传统Java应用集成,助力企业实现数字化转型。内容涵盖DJL、Deeplearning4j等主流AI框架选择,技术融合方案,模型部署策略,以及智能客服、财务审核、设备诊断等实战应用案例,全面解析Java系统如何通过AI实现智能化升级与效率提升。
517 0
|
7月前
|
IDE Ubuntu Java
在Ubuntu18.04安装兼容JDK 8的Eclipse集成开发环境的指南。
完成以上步骤后,您将在Ubuntu 18.04系统上成功安装并配置了Eclipse IDE,它将与JDK 8兼容,可以开始进行Java开发工作。如果遇到任何问题,请确保每一步骤都正确执行,并检查是否所有路径都与您的具体情况相匹配。
293 11
|
7月前
|
物联网 Linux 开发者
快速部署自己私有MQTT-Broker-下载安装到运行不到一分钟,快速简单且易于集成到自己项目中
本文给物联网开发的朋友推荐的是GMQT,让物联网开发者快速拥有合适自己的MQTT-Broker,本文从下载程序到安装部署手把手教大家安装用上私有化MQTT服务器。
1804 5
|
8月前
|
监控 安全 Java
Java 开发中基于 Spring Boot 3.2 框架集成 MQTT 5.0 协议实现消息推送与订阅功能的技术方案解析
本文介绍基于Spring Boot 3.2集成MQTT 5.0的消息推送与订阅技术方案,涵盖核心技术栈选型(Spring Boot、Eclipse Paho、HiveMQ)、项目搭建与配置、消息发布与订阅服务实现,以及在智能家居控制系统中的应用实例。同时,详细探讨了安全增强(TLS/SSL)、性能优化(异步处理与背压控制)、测试监控及生产环境部署方案,为构建高可用、高性能的消息通信系统提供全面指导。附资源下载链接:[https://pan.quark.cn/s/14fcf913bae6](https://pan.quark.cn/s/14fcf913bae6)。
1638 0
|
11月前
|
消息中间件 存储 Java
微服务——SpringBoot使用归纳——Spring Boot中集成ActiveMQ——ActiveMQ安装
本教程介绍ActiveMQ的安装与基本使用。首先从官网下载apache-activemq-5.15.3版本,解压后即可完成安装,非常便捷。启动时进入解压目录下的bin文件夹,根据系统选择win32或win64,运行activemq.bat启动服务。通过浏览器访问`http://127.0.0.1:8161/admin/`可进入管理界面,默认用户名密码为admin/admin。ActiveMQ支持两种消息模式:点对点(Queue)和发布/订阅(Topic)。前者确保每条消息仅被一个消费者消费,后者允许多个消费者同时接收相同消息。
396 0
微服务——SpringBoot使用归纳——Spring Boot中集成ActiveMQ——ActiveMQ安装
|
11月前
|
NoSQL Java Redis
微服务——SpringBoot使用归纳——Spring Boot 中集成Redis——Redis 安装
本教程介绍在 VMware 虚拟机(CentOS 7)或阿里云服务器中安装 Redis 的过程,包括安装 gcc 编译环境、下载 Redis(官网或 wget)、解压安装、修改配置文件(如 bind、daemonize、requirepass 等设置)、启动 Redis 服务及测试客户端连接。通过 set 和 get 命令验证安装是否成功。适用于初学者快速上手 Redis 部署。
337 0
|
11月前
|
SQL druid Oracle
【YashanDB知识库】yasdb jdbc驱动集成druid连接池,业务(java)日志中有token IDENTIFIER start异常
客户Java日志中出现异常,影响Druid的merge SQL功能(将SQL字面量替换为绑定变量以统计性能),但不影响正常业务流程。原因是Druid在merge SQL时传入null作为dbType,导致无法解析递归查询中的`start`关键字。
|
11月前
|
SQL Java 中间件
【YashanDB知识库】yasdb jdbc驱动集成BeetISQL中间件,业务(java)报autoAssignKey failure异常
在BeetISQL 2.13.8版本中,客户使用batch insert向yashandb表插入数据并尝试获取自动生成的sequence id时,出现类型转换异常。原因是beetlsql在prepareStatement时未指定返回列,导致yashan JDBC驱动返回rowid(字符串),与Java Bean中的数字类型tid不匹配。此问题影响业务流程,使无法正确获取sequence id。解决方法包括:1) 在batchInsert时不返回自动生成的sequence id;2) 升级至BeetISQL 3,其已修正该问题。
【YashanDB知识库】yasdb jdbc驱动集成BeetISQL中间件,业务(java)报autoAssignKey failure异常
|
12月前
|
人工智能 Java API
支持 40+ 插件,Spring AI Alibaba 简化智能体私有数据集成
通过使用社区官方提供的超过 20 种 RAG 数据源和 20 种 Tool Calling 接口,开发者可以轻松接入多种外部数据源(如 GitHub、飞书、云 OSS 等)以及调用各种工具(如天气预报、地图导航、翻译服务等)。这些默认实现大大简化了智能体的开发过程,使得开发者无需从零开始,便可以快速构建功能强大的智能体系统。通过这种方式,智能体不仅能够高效处理复杂任务,还能适应各种应用场景,提供更加智能、精准的服务。
1668 92