java调用Neo4j和ES接口的一些使用笔记
来源:互联网 发布:java向导被中断 编辑:程序博客网 时间:2024/06/05 05:40
场景:从neo4j中获取数据,更新同步到Es中。
1.从neo4j中获取数据。
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,如果ES2.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<String, String> 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
阅读全文
1 0
- java调用Neo4j和ES接口的一些使用笔记
- Neo4j的Rest接口使用
- Neo4j 的一些使用心得
- Neo4j使用时的一些体会
- 【学习笔记】Java抽象类和接口的一些总结
- Neo4j的安装和简单使用
- 使用Neo4j Java Driver操作Neo4j
- 使用Neo4j Java Driver操作Neo4j
- 初学Web接口调用的一些学习笔记
- 【Java学习笔记】Comparable接口的实现和使用
- 【Java学习笔记】Comparable接口的实现和使用
- 【Java学习笔记】Comparable接口的实现和使用
- 【Java学习笔记】Comparable接口的实现和使用
- 5.5-全栈Java笔记:接口的定义和使用
- 【Java学习笔记】Comparable接口的实现和使用
- neo4j的使用一
- neo4j的使用二
- neo4j的使用感悟
- GIT常用命令
- i++与++i
- 任务就绪表及任务调度
- Sublime Text 3 编译运行java
- p219 14.输入10个同学的5门课成绩,分别用函数实现。。。
- java调用Neo4j和ES接口的一些使用笔记
- 大整数的加法
- 通向架构师的道路(第一天)之Apache整合Tomcat
- div标签、html/css基本样式、canvas画布
- WinSock-EchoServ程序学习
- 【LeetCode】228.Summary Ranges(Medium)解题报告
- 最省心的Python版本和第三方库管理——初探Anaconda
- 淘淘商城内容服务发布
- Oracle操作字符串常用函数记录