elasticsearch Insert 插入数据和delete 删除数据(Java)
2018-01-11 16:14
603 查看
首先我不赞成再采用一些中间件(jar包)来解决和 Elasticsearch 之间的交互,比如
本身的用法就是很简洁的,也很容易,只要稍微加一下封装,即可解决。下面上我的简单封装的批量处理。
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 idNameId字段名称
* @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 idNameId字段名称
* @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;
}
}
相关文章推荐
- 触发器记录表某一个字段数据变化的日志 包括插入insert 修改update 删除delete 操作
- MySQL--操作简记(create创建操纵表、insert插入、update更新、delete删除数据)
- JAVA insert() 插入字符串 reverse() 颠倒 delete()和deleteCharAt() 删除字符 replace() 替换 substring() 截取子串
- Elasticsearch教程(七) elasticsearch Insert 插入数据(Java)
- Elasticsearch教程(八) elasticsearch delete 删除数据(Java)
- 利用android提高的的insert,query,update,deleteAPI与execSql,rawQuery函数执行原生的插入,查询,更新,删除语
- <java><JTable>使用AbstractTableModel实现更新、删除、插入数据
- [转]MSSQL数据库触发器--更新(update),删除(delete),插入(insert)
- 利用android提高的的insert,query,update,deleteAPI与execSql,rawQuery函数执行原生的插入,查询,更新,删除语
- JAVA开发13--批量将数据insert插入oracle表
- Java插入修改删除数据库数据的基本方法
- java mybatis mapper批量插入数据,insert/update/映射属性字段
- 数据添加(insert),删除(delete),更新(update)
- [LeetCode] Insert Delete GetRandom O(1) - Duplicates allowed 常数时间内插入删除和获得随机数 - 允许重复
- 二叉搜索树的查询、插入与删除操作(Binary Search Tree, Search, Insert, Delete)(C++)
- JAVA对数据库进行操作,实现数据库中数据的插入,查询,更改,删除操作
- java实现hbase表创建、数据插入、删除表
- ElasticSearch中根据查询结果删除数据(delete by query)
- jsp操作MySQL实现查询、插入与删除功能(query、insert、delete)
- [LeetCode] Insert Delete GetRandom O(1) 常数时间内插入删除和获得随机数