elasticsearch条件删除数据delete-by-query
根据term, match等查询方式去删除大量的文档.
ps:如果是大量的删除,不推荐这个方式,太耗时了,因为是根据查询的id一个一个删除,而查询本身也很消耗性能,推荐新建一个index,把保留的部分保留到新的index
curl -X POST "http://localhost:9200/wk_single_expense/_delete_by_query" -H 'Content-Type: application/json' -d'
{
"query": {
"range": {
"expenseId": {
"gte": 502,
"lte":519
}
}
}
}
'
在java中用索引删除
@Test
public void deletByQueryTest() throws IOException {
//创建DeleteByQueryRequest对象
String index = "sms-logs-index";
String type = "sms-logs-type";
DeleteByQueryRequest deleteByQueryRequest = new DeleteByQueryRequest(index);
deleteByQueryRequest.types(type);
//指定删除条件
RangeQueryBuilder fee = QueryBuilders.rangeQuery("fee").lt(20).gt(10);
deleteByQueryRequest.setQuery(fee);
//创建查询对象
HttpHost httpHost = new HttpHost("192.168.43.30", 9200);
RestClientBuilder restClientBuilder = RestClient.builder(httpHost);
RestHighLevelClient restHighLevelClient = new RestHighLevelClient(restClientBuilder);
//执行删除
BulkByScrollResponse bulkByScrollResponse = restHighLevelClient.deleteByQuery(deleteByQueryRequest, RequestOptions.DEFAULT);
System.out.println(bulkByScrollResponse);
}
http://t.zoukankan.com/dangdanghepingping-p-14415277.html