1.创建client
Settings settings = Settings.builder().put("cluster.name", "my_cluster").build();
TransportClient client = new PreBuiltTransportClient(settings)
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.10"), 9300));
2.通过ID删除
DeleteResponse dResponse = client.prepareDelete("my_index", "my_type","1").execute().actionGet();
3.通过IDS,批量删除
public String batchDelete(String[] ids) {
// bulk批量操作
BulkRequestBuilder bulk = client.prepareBulk();
// 删除请求
DeleteRequestBuilder delete = null;
for (String id : ids) {
delete = client.prepareDelete("my_index", "my_type", id);
// 加入bulk批量操作
bulk.add(delete);
}
try {
// 请求过来即刷新
//BulkResponse response = bulk.setRefreshPolicy(WriteRequest.RefreshPolicy.WAIT_UNTIL).get()
// 执行
BulkResponse response = bulk.get();
return response.status().name();
} catch (Exception e) {
throw new IStarwayException("删除失败");
}
}
4.按条件删除,例按name条件删除
public void delete(String name) throws Exception {
// match 查询
QueryBuilder build = QueryBuilders.matchQuery("name", name)
// 删除
BulkByScrollResponse delete = DeleteByQueryAction.INSTANCE
.newRequestBuilder(client)
.source("my_index")
.filter(build)
.get();
long count = delete.getDeleted();
}
5.删除type下的所有数据
public long deleteType() {
// 查询整个type
QueryBuilder builder = QueryBuilders.typeQuery("my_type");
// 删除整个type的数据
BulkByScrollResponse response = DeleteByQueryAction.INSTANCE
.newRequestBuilder(client)
.source("my_index")
.filter(builder)
.get();
return response.getStatus().getDeleted();
}
6.删除索引
public boolean deleteIndex() {
// 删除整个索引
DeleteIndexResponse response = client.admin().indices()
.delete(new DeleteIndexRequest("my_index"))
.actionGet();
return response.isAcknowledged();
}