JAvaはNeo 4 jとESインタフェースのいくつかの使用ノートを呼び出します


シーン:neo 4 jからデータを取得し、更新をEsに同期します.1.neo 4 jからデータを取得する.
org.neo4j.driver.v1.Driver driver = GraphDatabase.driver( "bolt://192.168.2.74:7687",AuthTokens.basic( "neo4j", "Neo4j" ));//    
Session session = driver.session();//    
StatementResult result = session.run( "MATCH (a:"+label+") return a.name as name");//     

2.delete-by-query方式でES中原データを削除する
//  client
        esAPI.OpenClient2();
        TransportClient client=esAPI.get_Client();
        //  ES    
        //        
        QueryBuilder queryBuilder1 = QueryBuilders.matchQuery("field", "name");
        QueryBuilder queryBuilder2 = QueryBuilders.matchQuery("type", type);  
        QueryBuilder queryBuilder3 = QueryBuilders.matchQuery("label", label);
        QueryBuilder queryBuilder4 = QueryBuilders.typeQuery(_type);
        //        
        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); 
        boolQueryBuilder.must(queryBuilder1);  
        boolQueryBuilder.must(queryBuilder2); 
        boolQueryBuilder.must(queryBuilder3); 
        boolQueryBuilder.must(queryBuilder4); 
        //      
        BulkIndexByScrollResponse response=  DeleteByQueryAction.INSTANCE.newRequestBuilder(client).source(_index).refresh(true).filter(boolQueryBuilder).execute().actionGet();
        System.out.println(response.getDeleted());//    

なお、ES-5.02でdelete by queryがサポートされている場合、ES 2.Xの前にdelete-by-queryプラグインをわざわざインストールする必要があり、削除文はES-5.02と大きく異なります.削除を行う場合は、refresh(true)を使用することをお勧めします.そうしないと、ESでデータがリフレッシュされます.3.ESへのデータの一括更新
      //     ES
        int i=0;
        BulkRequestBuilder bulkRequest = client.prepareBulk();
        while ( result.hasNext() )
        {
            i=i+1;
            Record record = result.next();//  Neo4j      
            String id=UUID.randomUUID().toString();
            Map ret=new HashMap<>();
            ret.put("label", label);
            ret.put("field", "name");
            ret.put("type", "e");
            ret.put("value", record.get("name").asString());
            bulkRequest.add(client.prepareIndex(_index, _type).setId(id).setSource(ret));
            if(i%100000==0) {// 100000     
                System.out.println(i);
                bulkRequest.execute().actionGet();
                bulkRequest = client.prepareBulk();//  
            }

        }System.out.println(i);
        bulkRequest.execute().actionGet();

パラメータ_indexはESのインデックスを表し、typeはES中のtypeを表す