elasticsearch 学习博客系列<四> ES 中 index-doc 的 删除(java)
2017-06-01 23:53
786 查看
这一篇 我们讲解一下 Java 常用的 删除ES文档 doc 的方法,也是 分为 单个 删除 和 批量删除
删除的时候要进行定位,indexName + typeName + docId 进行 唯一 确定文档 坐标 进行删除,一般我使用 这种方式删除(当然 还有其他方法)
所以 你要 先获取 docId 才可以 删除
单个删除:
/**
*
* @param docId
*/
public void deleteData(String docId){
boolean exist = EsClientUtil.isExistIndex(name);
if(exist){
ESClient client = EsClientUtil.getDefaultDelegateClient();
// 先indexName typename docID
client.prepareDelete(name, name, docId)
.execute().actionGet();
}
}
批量删除:
这里我这是 先查询出 docId 再进行批量删除
/**
* 删除信息
* @param ids
*/
public void deleteInfo(long[] ids){
if(ids == null || ids.length == 0) return;
boolean exist = EsClientUtil.isExistIndex(name);
if(exist){
ESClient client = EsClientUtil.getDefaultDelegateClient();
// 先查询 再 删除 inquery ids.length 1024 限制
QueryBuilder qb = QueryBuilders.inQuery("id", ids);// fieldName
SearchResponse respose = client.prepareSearch(name)
.setTypes(name)
.setQuery(qb)
.setSize(Integer.MAX_VALUE)
.execute().actionGet();
SearchHit[] hits = respose.getHits().getHits();
if(hits.length > 0){
// 开启批量删除
BulkRequestBuilder bulkfresh = client.prepareBulk().setRefresh(true);
for (SearchHit searchHit : hits) {
DeleteRequest deleteRequest = new DeleteRequest(name, name, searchHit.getId());
bulkfresh.add(deleteRequest);
}
// 执行
bulkfresh.execute().actionGet();
}
}
}
个人 习惯这种删除方法,先获取到 docId 在进行删除,当然 还有其他方法,在此处 不在详述
删除的时候要进行定位,indexName + typeName + docId 进行 唯一 确定文档 坐标 进行删除,一般我使用 这种方式删除(当然 还有其他方法)
所以 你要 先获取 docId 才可以 删除
单个删除:
/**
*
* @param docId
*/
public void deleteData(String docId){
boolean exist = EsClientUtil.isExistIndex(name);
if(exist){
ESClient client = EsClientUtil.getDefaultDelegateClient();
// 先indexName typename docID
client.prepareDelete(name, name, docId)
.execute().actionGet();
}
}
批量删除:
这里我这是 先查询出 docId 再进行批量删除
/**
* 删除信息
* @param ids
*/
public void deleteInfo(long[] ids){
if(ids == null || ids.length == 0) return;
boolean exist = EsClientUtil.isExistIndex(name);
if(exist){
ESClient client = EsClientUtil.getDefaultDelegateClient();
// 先查询 再 删除 inquery ids.length 1024 限制
QueryBuilder qb = QueryBuilders.inQuery("id", ids);// fieldName
SearchResponse respose = client.prepareSearch(name)
.setTypes(name)
.setQuery(qb)
.setSize(Integer.MAX_VALUE)
.execute().actionGet();
SearchHit[] hits = respose.getHits().getHits();
if(hits.length > 0){
// 开启批量删除
BulkRequestBuilder bulkfresh = client.prepareBulk().setRefresh(true);
for (SearchHit searchHit : hits) {
DeleteRequest deleteRequest = new DeleteRequest(name, name, searchHit.getId());
bulkfresh.add(deleteRequest);
}
// 执行
bulkfresh.execute().actionGet();
}
}
}
个人 习惯这种删除方法,先获取到 docId 在进行删除,当然 还有其他方法,在此处 不在详述
相关文章推荐
- elasticsearch 学习博客系列<三> ES 中 index-doc 的 添加(java)
- elasticsearch 学习博客系列<五> ES 中 index-doc 的 更新(java)
- elasticsearch 学习博客系列<二> ES 中 index 设置 Mapping(表结构)
- elasticsearch 学习博客系列<一> ES 的安装与配置
- Java系列学习笔记------Java语言基础<2>
- zookeeper学习之java API会话建立<四>
- zookeeper学习之java api查找并删除节点<五>
- LDAP学习笔记<四>jldap实现Java对LDAP的基本操作
- Java系列学习笔记------Java技术基础<1>
- (转)MFC技巧学习<四>
- Android NDK学习 <四> Application.mk简介
- 黑马程序员Java初级<四>---> 数组
- 程序员_Java初级<四>数组、进制转换函数
- <转>Html5 学习系列(一)认识HTML5
- 进程控制理论<四>---那些年我们一起学习linux程序设计 .
- 菜鸟的Hadoop学习之路系列<一>:自己动手搭建Hadoop集群
- 菜鸟的Hadoop学习之路系列<二>:Hadoop集群构成和HDFS
- SQL Server XML基础学习之<6>--XML modify() 方法对 XML 数据中插入、更新或删除
- SQL 学习笔记<四> MySQL嵌套查询,集合操作
- Android NDK学习 <四> Application.mk简介