您的位置:首页 > 编程语言 > Java开发

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 在进行删除,当然 还有其他方法,在此处 不在详述
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  elasticsearch java