调用client删除数据,使用DeleteRequest对象处理操作
批量操作使用BulkRequest对象。
private String index;
private String type;
@Autowired
private TransportClient client;
@Before
public void prepare() {
index = "database";
type = "table";
}
/**
* 通过ID进行删除
*/
@Test
public void deleteById() {
// 此处ID是es里面自己生成的ID,与数据ID无关
String id = "AWb23S95Hj0kMOI7Sqr8";
DeleteRequest deleteRequest = new DeleteRequest(index, type, id);
DeleteResponse response = client.delete(deleteRequest).actionGet();
System.out.println(response);
}
/**
* 通过数据查询条件删除
*/
@Test
public void deleteByQuery() {
String deleteText = "test1";
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.timeout(new TimeValue(2, TimeUnit.SECONDS));
TermQueryBuilder termQueryBuilder1 = QueryBuilders.termQuery("name", deleteText);
sourceBuilder.query(termQueryBuilder1);
SearchRequest searchRequest = new SearchRequest(index);
searchRequest.types(type);
searchRequest.source(sourceBuilder);
SearchResponse response = client.search(searchRequest).actionGet();
SearchHits hits = response.getHits();
List<String> docIds = new ArrayList<>(hits.getHits().length);
for (SearchHit hit : hits) {
docIds.add(hit.getId());
}
BulkRequest bulkRequest = new BulkRequest();
for (String id : docIds) {
DeleteRequest deleteRequest = new DeleteRequest(index, type, id);
bulkRequest.add(deleteRequest);
}
client.bulk(bulkRequest);
}