elasticsearch Insert 插入数据和delete 删除数据(Java)
首先我不赞成再采用一些中间件(jar包)来解决和 Elasticsearch 之间的交互,比如 Spring-data-elasticsearch.jar
系列一样,用就得依赖它。而 Elasticsearch 本身的用法就是很简洁的,也很容易,只要稍微加一下封装,即可解决。下面上我的简单封装的批量处理。
package com.sojson.core.elasticsearch.manager;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONObject;
import org.elasticsearch.action.bulk.BulkRequestBuilder;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.index.IndexRequestBuilder;
import com.sojson.common.utils.StringUtils;
import com.sojson.core.elasticsearch.utils.ESTools;
public class InsertManager {
/**
* 添加数据到Elasticsearch
* @param index 索引
* @param type 类型
* @param idName Id字段名称
* @param json 存储的JSON,可以接受Map
* @return
*/
public static Map save(String index, String type, String idName,JSONObject json) {
List list = new ArrayList();
list.add(json);
return save(index, type, idName, list);
}
/**
* 添加数据到Elasticsearch
* @param index 索引
* @param type 类型
* @param idName Id字段名称
* @param listData 一个对象集合
* @return
*/
@SuppressWarnings("unchecked")
public static Map save(String index, String type, String idName,List listData) {
BulkRequestBuilder bulkRequest = ESTools.client.prepareBulk().setRefresh(true);
Map resultMap = new HashMap();
for (Object object : listData) {
JSONObject json = JSONObject.fromObject(object);
//没有指定idName 那就让Elasticsearch自动生成
if(StringUtils.isBlank(idName)){
IndexRequestBuilder lrb = ESTools.client .prepareIndex(index, type) .setSource(json);
bulkRequest.add(lrb);
}
else{
String idValue = json.optString(idName);
IndexRequestBuilder lrb = ESTools.client .prepareIndex(index, type,idValue) .setSource(json);
bulkRequest.add(lrb);
}
}
BulkResponse bulkResponse = bulkRequest.execute().actionGet();
if (bulkResponse.hasFailures()) {
// process failures by iterating through each bulk response item
System.out.println(bulkResponse.getItems().toString());
resultMap.put("500", "保存ES失败!");
return resultMap;
}
bulkRequest = ESTools.client.prepareBulk();
resultMap.put("200", "保存ES成功!");
return resultMap;
}
}
Elasticsearch的删除也是很灵活的,下次我再介绍, DeleteByQuery
的方式。今天就先介绍一个根据ID删除。上代码。
package com.sojson.core.elasticsearch.manager;
import org.elasticsearch.action.delete.DeleteResponse;
import com.sojson.common.model.SOBanggKey;
import com.sojson.core.elasticsearch.utils.ESTools;
public class DeleteManager {
/**
* 根据ID删除
* @param key
* @return
*/
public static int deleteSOBanggByKey(SOBanggKey key) {
//这里可以忽略,组装一个我业务逻辑的ID
String prefix = "%sx_x%s";
String id = String.format(prefix, key.getId(),key.getGid());
DeleteResponse result = ESTools.client.prepareDelete().setRefresh(true).setIndex(MappingManager.INDEX)
.setType(MappingManager.B_TYPE)
.setId(id)//设置ID
.setRefresh(true)//刷新
.execute().actionGet();
//是否查找并删除
boolean isfound = result.isFound();
return isfound?1:0;
}
}
elasticsearch Insert 插入数据和delete 删除数据(Java)相关推荐
- cass道路道路设计参数文件命令为什么没反应_为什么MySQL不建议使用delete删除数据?...
前言 我负责的有几个系统随着业务量的增长,存储在MySQL中的数据日益剧增,我当时就想现在的业务方不讲武德,搞偷袭,趁我没反应过来把很多表,很快,很快啊都打到了亿级别,我大意了,没有闪,这就导致跟其J ...
- 使用 SqlDataSource 插入、更新和删除数据49
简介 正如在 数据插入.更新和删除概述 中讨论的那样,GridView 控件提供内置的更新和删除功能,而DetailsView 和 FormView 控件则包含对插入.编辑和删除功能的支持.这些数据修 ...
- mysql更新写入数据_七、MySQL插入、更新与删除数据
存储在系统中的数据是数据库管理系统(DBMS)的核心,数据库被设计用来管理数据的存储.访问和维护数据的完整性.MySQL中提供丰富的数据管理语句,包括插入数据的INSERT.更新数据的UPDATE以及 ...
- vs2010 mysql linq to sql 系列_LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据...
LINQ和 LINQ to SQL 都已经不是一个新事物了,但是我接触的比较晚,本着绝知此事要躬行的态度,决定写这个系列. 本文使用的测试环境是VS 2010,和sql server 2005数据库. ...
- delete index mysql_为什么MySQL不建议delete删除数据「心得分享」
前言 我负责的有几个系统随着业务量的增长,存储在MySQL中的数据日益剧增,我当时就想现在的业务方不讲武德,搞偷袭,趁我没反应过来把很多表,很快,很快啊都打到了亿级别,我大意了,没有闪,这就导致跟其J ...
- LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据
LINQ和 LINQ to SQL 都已经不是一个新事物了,但是我接触的比较晚,本着绝知此事要躬行的态度,决定写这个系列. 本文使用的测试环境是VS 2010,和sql server 2005数据库. ...
- MySQL 8——学习笔记03(插入、更新、删除 数据 [DML语句]、查询数据 [DQL语句])
MySQL 8--学习笔记03(插入.更新.删除 数据 [DML语句]) 一.插入数据 1.1 插入所有字段.插入部分字段 1.2 同时插入多条记录(批量插入) 1.3 将查询结果插入到表中 二.更新 ...
- cass道路道路设计参数文件命令为什么没反应_面试官不讲武德问我:为什么MySQL不建议使用delete删除数据?
有情怀,有干货,微信搜索[三太子敖丙]关注这个不一样的程序员. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的系列文章. ...
- mysql禁止数据被删除_为什么MySQL不建议delete删除数据
我负责的有几个系统随着业务量的增长,存储在MySQL中的数据日益剧增,我当时就想现在的业务方不讲武德,搞偷袭,趁我没反应过来把很多表,很快,很快啊都打到了亿级别,我大意了,没有闪,这就导致跟其Join ...
最新文章
- python可视化lassocv特征筛选之后的特征的相关性分析热力图
- python学到什么程度可以写爬虫-月薪2万的爬虫工程师,Python需要学到什么程度?...
- QDoc文件结构documentstructure
- liblapack.so.3: undefined symbol: gotoblas错误及解决办法
- 3.如何安装Apache Spark
- LRU和LFU的区别
- nyoj 586 疯牛(二分+贪心)
- 利兹大学计算机硕士专业排名,2020年利兹大学数学与计算机科学硕士专业硕士申请条件-学费-世界排名...
- Asp.Net请求原理and页面生命周期(转)
- azure云数据库_Azure SQL数据库中的漏洞评估和高级威胁防护
- 系统关机函数ExitWindowsEx详解
- [Linux]Red Hat Linux 9.0环境下架设Web服务器[2]
- iOS开发类似于刮刮卡效果,手指划过的区域形成画笔。适用于取出部分图片(截图),如截取出图片中带文字的区域部分。...
- angular uibpagination 分页相关
- 计算机自带拼图程序,电脑上比较好用的拼图软件?
- 【浏览器修改请求头】该地址不支持在浏览器打开,如需访问, 请使用微信扫描下方二维码
- ImportError: DLL load failed:找不到指定的模块 解决方案
- Mac idea打开项目Java文件和resources文件都被标记了resources类型
- 启信宝牵手国家队,征信服务进化再加速
- 绕任意向量旋转分解到坐标系旋转
热门文章
- 【击败时间100%】剑指 Offer 38. 字符串的排列
- Linux KVM 虚拟化技术
- Mysql索引的创建和使用
- 总线制和多线制示意图_再谈总线制与多线制的区别
- java中开根号求三角形_Java编程 如何计算三角形的内切圆半径?
- 微信支付宝服务器在哪里,支付宝支付与微信支付服务端回调notify_url数据的区别...
- c语言程序设计江宝钏第九章,C语言程序设计 (江宝钏 著) 清华大学出版社 第9章习题答案1...
- oracle 拆分逗号转行_一个列用逗号隔开,列转行,看看是否有更好的办法。
- java对象类型有哪些_Java中常用的对象数据类型有哪些?它们分别又占多少个字节呢?...
- 电机编码器调零步骤_编码器原理、霍尔应用原理、调整步骤三个方面进行解读编码器调试...