Spring ElasticSearch delete 기능

정명진·2023년 2월 23일
0

사이드 프로젝트를 진행하며 관리자 페이지에서 실시간 검색어를 관리하는 기능을 만들었다.

그중 요구사항에 삭제 기능이 있어야 해서 삭제 method를 구현하게 되었다.

id를 받아서 삭제하는것과 쿼리를 날려서 삭제하는게 있었는데 쿼리를 날려서 한번에 삭제하게끔 구현하였다.

@Override
    public void deleteKeyword(String keyword) {
        LocalDateTime now = LocalDateTime.now();
        // 현재 시간 0분 0초 ~ 현재 카운트
        QueryBuilder range = QueryBuilders.rangeQuery("@timestamp").gte(now.truncatedTo(ChronoUnit.HOURS).atZone(ZoneId.systemDefault()).toInstant().toEpochMilli())
                .lt(now.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli());

        QueryBuilder query = QueryBuilders.boolQuery()
                .must(matchQuery("message", "/performance/search"))
                .must(matchPhraseQuery("logger_name", "LOGSTASH"))
                .must(termQuery("keyword", keyword))
                .filter(range);
        // 쿼리 전송
        NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(query);
        NativeSearchQuery deleteQuery = searchQueryBuilder.build();
        elasticsearchOperations.delete(deleteQuery, AccessLogDocument.class, IndexCoordinates.of(IndexName.LOG.getValue()));
    }
profile
개발자로 입사했지만 정체성을 잃어가는중... 다시 준비 시작이다..

0개의 댓글