JAvaはNeo 4 jとESインタフェースのいくつかの使用ノートを呼び出します
6690 ワード
シーン:neo 4 jからデータを取得し、更新をEsに同期します.1.neo 4 jからデータを取得する.
2.delete-by-query方式でES中原データを削除する
なお、ES-5.02でdelete by queryがサポートされている場合、ES 2.Xの前にdelete-by-queryプラグインをわざわざインストールする必要があり、削除文はES-5.02と大きく異なります.削除を行う場合は、refresh(true)を使用することをお勧めします.そうしないと、ESでデータがリフレッシュされます.3.ESへのデータの一括更新
パラメータ_indexはESのインデックスを表し、typeはES中のtypeを表す
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を表す