Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Neo4j创建自动索引

一、创建Neo4j的Legacy indexing 1.为节点创建索引 官方API的创建示例为:将一节点添加至索引:public static void AddNodeIndex(String nid)
    {
        String txUri=SERVER_ROOT_URI+"index/node/favorites";
        WebResource resource = Client.create().resource(txUri);
        String entity="{"value" : "n204","uri" : "http://192.168.209.128:7474/db/data/node/"+nid+"","key" : "n201"}";
        ClientResponse response = resource.accept(MediaType.APPLICATION_JSON)
                .type(MediaType.APPLICATION_JSON).entity(entity)
                .post(ClientResponse.class);        System.out.println(response.getStatus());
        System.out.println(response.getEntity(String.class));
        response.close();
    }ps:nid是要添加索引的节点ID  value是索引值  key是索引名称2.通过属性查找节点public static void GetNodeByIndex()
    {
        String txUri=SERVER_ROOT_URI+"index/node/favorites/n201/n201";
        WebResource resource = Client.create().resource(txUri);
       
        ClientResponse response = resource.accept(MediaType.APPLICATION_JSON)
                .type(MediaType.APPLICATION_JSON)
                .get(ClientResponse.class);        System.out.println(response.getStatus());
        System.out.println(response.getEntity(String.class));
        response.close();
    }txUri路径中:favorites为刚创建的索引名称,第一个n201是节点索引key,第二个n201是节点索引值二、自动创建索引(Legacy Automatic Indexes)What default configuration means depends on how you have configured your database. If you haven’tchanged any indexing configuration, it means the indexes will be using a Lucene-based backend.数据库配置之后,就可以自动创建索引1.配置文件配置Auto-indexing must be enabled through configuration before we can create or configure them. Firstlyensure that you’ve added some config like this into your server’s conf/neo4j.properties file:打开conf/neo4j.properties文件如图配置下面的节点# Enable auto-indexing for nodes, default is false.
node_auto_indexing=true# The node property keys to be auto-indexed, if enabled.
node_keys_indexable=name,ki# Enable auto-indexing for relationships, default is false.
relationship_auto_indexing=true# The relationship property keys to be auto-indexed, if enabled.
relationship_keys_indexable=name,kiNode_keys_indexable、relationship_keys_indexable对应节点、关系的属性配置完成之后重启服务重启三个节点的集群2。测试索引插入一个节点和关系// 创建节点
    @Test
    public void test2() {
        URI uri = CreateSimpleGraph.createNode();
        CreateSimpleGraph.addProperty(uri, "name", "张三");
        URI uri1 = CreateSimpleGraph.createNode();
        CreateSimpleGraph.addProperty(uri1, "name", "李四");
    }
// 为节点设置关系
    @Test
    public void test6() {
        for (int i = 1; i < 2; i++) {
            try {
                URI suri = new URI("http://192.168.209.128:7474/db/data/node/171391");
                String uri1="http://192.168.209.128:7474/db/data/node/";
                URI euri = new URI("http://192.168.209.128:7474/db/data/node/171392");
                URI reluri= CreateSimpleGraph.addRelationship(suri, euri, "家人","{"ki" : "1234567890", "name" : "无" }");
                System.out.println(reluri);
            } catch (URISyntaxException e) {
                // 异常信息输出该内容
                e.printStackTrace();
            }
        }
    }3.通过属性查找节点public static void GetNodeByAutoIndex(String ki)
    {
//        String txUri=SERVER_ROOT_URI+"index/node/node_auto_index/name/"+ki;
        String txUri=SERVER_ROOT_URI+"index/auto/node/ki/"+ki;
        WebResource resource = Client.create().resource(txUri);
       
        ClientResponse response = resource.accept(MediaType.APPLICATION_JSON)
                .type(MediaType.APPLICATION_JSON)
                .get(ClientResponse.class);        System.out.println(response.getStatus());
        System.out.println(response.getEntity(String.class));
        response.close();
    }
   
    public static void GetRelationshipByAutoIndex(String ki)
    {
//        String txUri=SERVER_ROOT_URI+"index/node/node_auto_index/name/"+ki;
        String txUri=SERVER_ROOT_URI+"index/auto/relationship/ki/"+ki;
        WebResource resource = Client.create().resource(txUri);
       
        ClientResponse response = resource.accept(MediaType.APPLICATION_JSON)
                .type(MediaType.APPLICATION_JSON)
                .get(ClientResponse.class);        System.out.println(response.getStatus());
        System.out.println(response.getEntity(String.class));
        response.close();
    }关系的输出结果为:[ {
  "extensions" : { },
  "metadata" : {
    "id" : 337,
    "type" : "家人"
  },
  "data" : {
    "name" : "无",
    "ki" : "1234567890"
  },
  "property" : "http://192.168.209.128:7474/db/data/relationship/337/properties/{key}",
  "start" : "http://192.168.209.128:7474/db/data/node/171391",
  "self" : "http://192.168.209.128:7474/db/data/relationship/337",
  "end" : "http://192.168.209.128:7474/db/data/node/171392",
  "type" : "家人",
  "properties" : "http://192.168.209.128:7474/db/data/relationship/337/properties"
} ]这里说明一下,传值为中文的时候,查询不出来,可能需要编码,因为工作暂时没有用到,就没有再研究了 更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2015-05/117734p2.htm Neo4j生成测试数据 http://www.linuxidc.com/Linux/2012-05/61466.htmNeo4j运行原理 http://www.linuxidc.com/Linux/2012-02/53689.htmNeo4j High Availability 配置 http://www.linuxidc.com/Linux/2012-02/53688.htmNeo4J图数据库实践系列图数据库实践系列 (一)--Neo4J简介与安装 http://www.linuxidc.com/Linux/2013-08/88766.htm图数据库实践系列 (二)--Neo4J空间数据存储 http://www.linuxidc.com/Linux/2013-08/88767.htm图数据库实践系列 (三)--Neo4j Spatial的REST集成 http://www.linuxidc.com/Linux/2013-08/88768.htm