Skip to content

Latest commit

 

History

History
72 lines (58 loc) · 3.67 KB

5.bolt-client.md

File metadata and controls

72 lines (58 loc) · 3.67 KB

Bolt客户端

TuGraph目前兼容了Neo4j的Bolt协议,可以直接使用Neo4j的客户端访问TuGraph。

开启Bolt端口

Bolt端口是默认开启的,默认端口是7687。如果需要修改端口,请在配置文件中自行修改。基于docker方式部署的服务,配置文件在容器内 /usr/local/etc/lgraph.json文件中;如果是用rpm包部署的服务,配置文件在服务器的/usr/local/etc/lgraph.json。 修改端口后为了使端口生效,需要重启服务,重启服务的具体操作可见数据库运行。另外,配置文件中的详细配置项,可见数据库运行中的服务配置章节。

使用示例

添加Maven依赖

<dependency>
    <groupId>org.neo4j.driver</groupId>
    <artifactId>neo4j-java-driver</artifactId>
    <version>4.4.2</version>
</dependency>

Client按照如下格式进行实例化:

    Driver driver = GraphDatabase.driver("bolt://ip:port", AuthTokens.basic("admin", "73@TuGraph"));

常用语句

        //通过 driver 对象创建一个 Session,设置会话连接到特定的数据库,用于执行Cypher语句
        Session session = driver.session(SessionConfig.forDatabase("default"));
        //清空图项目,请不要轻易尝试,它会清空你选中的图项目的模型以及数据
        session.run("CALL db.dropDB()");
        //创建点模型
        session.run("CALL db.createVertexLabel('person', 'id' , 'id' ,INT32, false, 'name' ,STRING, false)");
        //创建边模型
        session.run("CALL db.createEdgeLabel('is_friend','[[\"person\",\"person\"]]')");
        //创建索引
        session.run("CALL db.addIndex(\"person\", \"name\", false)");
        //插入点数据
        session.run("create (n1:person {name:'jack',id:1}), (n2:person {name:'lucy',id:2})");
        //插入边数据
        session.run("match (n1:person {id:1}), (n2:person {id:2}) create (n1)-[r:is_friend]->(n2)");
        //查询点和边
        Result res = session.run("match (n)-[r]->(m) return n,r,m");
        //Parameterized Query
        String cypherQuery = "MATCH (n1:person {id:$id})-[r]-(n2:person {name:$name}) RETURN n1, r, n2";
        Result result1 = session.run(cypherQuery, parameters("id", 1, "name", "lucy"));
        while (result1.hasNext()) {
        Record record = result1.next();
        System.out.println("n1: " + record.get("n1").asMap());
        System.out.println("r: " + record.get("r").asMap());
        System.out.println("n2: " + record.get("n2").asMap());
                }
        //删除点数据
        session.run("match (n1:person {id:1}) delete n1");
        //删除边数据
        session.run("match (n1:person {id:1})-[r]-(n2:person{id:2}) delete r");
        //删除边模型
        session.run("CALL db.deleteLabel('edge', 'is_friend')");
        //删除点模型
        session.run("CALL db.deleteLabel('vertex', 'person')");

详细Cypher和存储过程的使用可见Cypher

Neo4j客户端使用限制

目前,我们的系统尚未全面兼容Neo4j Bolt协议的所有高级特性。特别地,对于Neo4j客户端所具备的即时事务处理功能及弱schema灵活性这两项独特能力,当前尚不提供支持。因此,在采用客户端进行操作时,请务必留意规避涉及此类特性的操作,以确保应用的顺畅运行与数据的一致性。

客户端示例

在代码目录中的demo/Bolt下面有Golang、Java、JavaScript、Python、Rust 这几个语言的的例子。想要了解更多可见客户端示例