public void deletePrivateChatEsRecord() {
try {
BulkRequest bulkRequest = new BulkRequest();
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
//拿到前2天的时间戳
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
// 范围
RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("sendTime");
//6个月之前的数据
rangeQueryBuilder.to(getTimestamp(getOneMinuteAgo(new Date(), 60*24*180)),false);
boolQueryBuilder.filter(rangeQueryBuilder);
searchSourceBuilder.query(boolQueryBuilder);
//分页参数
// searchSourceBuilder.from((dto.getPageIndex() - 1) * dto.getPageSize());
searchSourceBuilder.size(10000);
// 创建查询请求对象,将查询对象配置到其中
SearchRequest searchRequest = new SearchRequest();
searchRequest.source(searchSourceBuilder);
searchRequest.indices(index);
// 执行查询,然后处理响应结果
SearchResponse searchResponse = esClient.search(searchRequest, RequestOptions.DEFAULT);
if (RestStatus.OK.equals(searchResponse.status())) {
SearchHits hits = searchResponse.getHits();
for (SearchHit hit : hits) {
String id = hit.getId();
DeleteRequest deleteRequest = new DeleteRequest(index, "_doc", id);
bulkRequest.add(deleteRequest);
}
BulkResponse bulkResponse = esClient.bulk(bulkRequest, RequestOptions.DEFAULT);
logger.info("ES deletePrivateChatEsRecord success", JacksonUtil.toJson(bulkResponse));
}
}catch (Exception e){
logger.error("ES deletePrivateChatEsRecord error",e);
}
}
删除es数据
最新推荐文章于 2024-09-27 10:02:44 发布
该代码片段展示了如何使用Elasticsearch进行私聊记录的定时删除,通过构建`BulkRequest`、`SearchSourceBuilder`和`DeleteRequest`,在满足特定时间范围(6个月前)后从索引中删除相关文档。
摘要由CSDN通过智能技术生成