首先我不赞成再采用一些中间件(jar包)来解决和 Elasticsearch  之间的交互,比如 Spring-data-elasticsearch.jar 系列一样,用就得依赖它。而 Elasticsearch  本身的用法就是很简洁的,也很容易,只要稍微加一下封装,即可解决。下面上我的简单封装的批量处理。

  1. package com.sojson.core.elasticsearch.manager;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.Map;
  6. import net.sf.json.JSONObject;
  7. import org.elasticsearch.action.bulk.BulkRequestBuilder;
  8. import org.elasticsearch.action.bulk.BulkResponse;
  9. import org.elasticsearch.action.index.IndexRequestBuilder;
  10. import com.sojson.common.utils.StringUtils;
  11. import com.sojson.core.elasticsearch.utils.ESTools;
  12. public class InsertManager {
  13. /**
  14. * 添加数据到Elasticsearch
  15. * @param index 索引
  16. * @param type 类型
  17. * @param idName Id字段名称
  18. * @param json 存储的JSON,可以接受Map
  19. * @return
  20. */
  21. public static Map save(String index, String type, String idName,JSONObject json) {
  22. List list = new ArrayList();
  23. list.add(json);
  24. return save(index, type, idName, list);
  25. }
  26. /**
  27. * 添加数据到Elasticsearch
  28. * @param index 索引
  29. * @param type 类型
  30. * @param idName Id字段名称
  31. * @param listData 一个对象集合
  32. * @return
  33. */
  34. @SuppressWarnings("unchecked")
  35. public static Map save(String index, String type, String idName,List listData) {
  36. BulkRequestBuilder bulkRequest = ESTools.client.prepareBulk().setRefresh(true);
  37. Map resultMap = new HashMap();
  38. for (Object object : listData) {
  39. JSONObject json = JSONObject.fromObject(object);
  40. //没有指定idName 那就让Elasticsearch自动生成
  41. if(StringUtils.isBlank(idName)){
  42. IndexRequestBuilder lrb = ESTools.client                                                             .prepareIndex(index, type)                                                                 .setSource(json);
  43. bulkRequest.add(lrb);
  44. }
  45. else{
  46. String idValue = json.optString(idName);
  47. IndexRequestBuilder lrb = ESTools.client                                                                 .prepareIndex(index, type,idValue)                                                                 .setSource(json);
  48. bulkRequest.add(lrb);
  49. }
  50. }
  51. BulkResponse bulkResponse = bulkRequest.execute().actionGet();
  52. if (bulkResponse.hasFailures()) {
  53. // process failures by iterating through each bulk response item
  54. System.out.println(bulkResponse.getItems().toString());
  55. resultMap.put("500", "保存ES失败!");
  56. return resultMap;
  57. }
  58. bulkRequest = ESTools.client.prepareBulk();
  59. resultMap.put("200", "保存ES成功!");
  60. return resultMap;
  61. }
  62. }

Elasticsearch的删除也是很灵活的,下次我再介绍, DeleteByQuery的方式。今天就先介绍一个根据ID删除。上代码。

  1. package com.sojson.core.elasticsearch.manager;
  2. import org.elasticsearch.action.delete.DeleteResponse;
  3. import com.sojson.common.model.SOBanggKey;
  4. import com.sojson.core.elasticsearch.utils.ESTools;
  5. public class DeleteManager {
  6. /**
  7. * 根据ID删除
  8. * @param key
  9. * @return
  10. */
  11. public static int deleteSOBanggByKey(SOBanggKey key) {
  12. //这里可以忽略,组装一个我业务逻辑的ID
  13. String prefix = "%sx_x%s";
  14. String id = String.format(prefix, key.getId(),key.getGid());
  15. DeleteResponse result = ESTools.client.prepareDelete().setRefresh(true).setIndex(MappingManager.INDEX)
  16. .setType(MappingManager.B_TYPE)
  17. .setId(id)//设置ID
  18. .setRefresh(true)//刷新
  19. .execute().actionGet();
  20. //是否查找并删除
  21. boolean isfound = result.isFound();
  22. return isfound?1:0;
  23. }
  24. }

elasticsearch Insert 插入数据和delete 删除数据(Java)相关推荐

  1. cass道路道路设计参数文件命令为什么没反应_为什么MySQL不建议使用delete删除数据?...

    前言 我负责的有几个系统随着业务量的增长,存储在MySQL中的数据日益剧增,我当时就想现在的业务方不讲武德,搞偷袭,趁我没反应过来把很多表,很快,很快啊都打到了亿级别,我大意了,没有闪,这就导致跟其J ...

  2. 使用 SqlDataSource 插入、更新和删除数据49

    简介 正如在 数据插入.更新和删除概述 中讨论的那样,GridView 控件提供内置的更新和删除功能,而DetailsView 和 FormView 控件则包含对插入.编辑和删除功能的支持.这些数据修 ...

  3. mysql更新写入数据_七、MySQL插入、更新与删除数据

    存储在系统中的数据是数据库管理系统(DBMS)的核心,数据库被设计用来管理数据的存储.访问和维护数据的完整性.MySQL中提供丰富的数据管理语句,包括插入数据的INSERT.更新数据的UPDATE以及 ...

  4. vs2010 mysql linq to sql 系列_LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据...

    LINQ和 LINQ to SQL 都已经不是一个新事物了,但是我接触的比较晚,本着绝知此事要躬行的态度,决定写这个系列. 本文使用的测试环境是VS 2010,和sql server 2005数据库. ...

  5. delete index mysql_为什么MySQL不建议delete删除数据「心得分享」

    前言 我负责的有几个系统随着业务量的增长,存储在MySQL中的数据日益剧增,我当时就想现在的业务方不讲武德,搞偷袭,趁我没反应过来把很多表,很快,很快啊都打到了亿级别,我大意了,没有闪,这就导致跟其J ...

  6. LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据

    LINQ和 LINQ to SQL 都已经不是一个新事物了,但是我接触的比较晚,本着绝知此事要躬行的态度,决定写这个系列. 本文使用的测试环境是VS 2010,和sql server 2005数据库. ...

  7. MySQL 8——学习笔记03(插入、更新、删除 数据 [DML语句]、查询数据 [DQL语句])

    MySQL 8--学习笔记03(插入.更新.删除 数据 [DML语句]) 一.插入数据 1.1 插入所有字段.插入部分字段 1.2 同时插入多条记录(批量插入) 1.3 将查询结果插入到表中 二.更新 ...

  8. cass道路道路设计参数文件命令为什么没反应_面试官不讲武德问我:为什么MySQL不建议使用delete删除数据?

    有情怀,有干货,微信搜索[三太子敖丙]关注这个不一样的程序员. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的系列文章. ...

  9. mysql禁止数据被删除_为什么MySQL不建议delete删除数据

    我负责的有几个系统随着业务量的增长,存储在MySQL中的数据日益剧增,我当时就想现在的业务方不讲武德,搞偷袭,趁我没反应过来把很多表,很快,很快啊都打到了亿级别,我大意了,没有闪,这就导致跟其Join ...

最新文章

  1. python可视化lassocv特征筛选之后的特征的相关性分析热力图
  2. python学到什么程度可以写爬虫-月薪2万的爬虫工程师,Python需要学到什么程度?...
  3. QDoc文件结构documentstructure
  4. liblapack.so.3: undefined symbol: gotoblas错误及解决办法
  5. 3.如何安装Apache Spark
  6. LRU和LFU的区别
  7. nyoj 586 疯牛(二分+贪心)
  8. 利兹大学计算机硕士专业排名,2020年利兹大学数学与计算机科学硕士专业硕士申请条件-学费-世界排名...
  9. Asp.Net请求原理and页面生命周期(转)
  10. azure云数据库_Azure SQL数据库中的漏洞评估和高级威胁防护
  11. 系统关机函数ExitWindowsEx详解
  12. [Linux]Red Hat Linux 9.0环境下架设Web服务器[2]
  13. iOS开发类似于刮刮卡效果,手指划过的区域形成画笔。适用于取出部分图片(截图),如截取出图片中带文字的区域部分。...
  14. angular uibpagination 分页相关
  15. 计算机自带拼图程序,电脑上比较好用的拼图软件?
  16. 【浏览器修改请求头】该地址不支持在浏览器打开,如需访问, 请使用微信扫描下方二维码
  17. ImportError: DLL load failed:找不到指定的模块 解决方案
  18. Mac idea打开项目Java文件和resources文件都被标记了resources类型
  19. 启信宝牵手国家队,征信服务进化再加速
  20. 绕任意向量旋转分解到坐标系旋转

热门文章

  1. 【击败时间100%】剑指 Offer 38. 字符串的排列
  2. Linux KVM 虚拟化技术
  3. Mysql索引的创建和使用
  4. 总线制和多线制示意图_再谈总线制与多线制的区别
  5. java中开根号求三角形_Java编程 如何计算三角形的内切圆半径?
  6. 微信支付宝服务器在哪里,支付宝支付与微信支付服务端回调notify_url数据的区别...
  7. c语言程序设计江宝钏第九章,C语言程序设计 (江宝钏 著) 清华大学出版社 第9章习题答案1...
  8. oracle 拆分逗号转行_一个列用逗号隔开,列转行,看看是否有更好的办法。
  9. java对象类型有哪些_Java中常用的对象数据类型有哪些?它们分别又占多少个字节呢?...
  10. 电机编码器调零步骤_编码器原理、霍尔应用原理、调整步骤三个方面进行解读编码器调试...