elasticsearch 学习博客系列<四> ES 中 index-doc 的 删除(java)

这一篇 我们讲解一下 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 在进行删除,当然 还有其他方法,在此处 不在详述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值