본문 바로가기

Elasticsearch

Elasticsearch + spirng boot 연동(DELETE)

오늘은 자바에서 Elasticsearch 데이터를 삭제해보려고 한다.

저번 실습에서 추가한 DocumentApi.java 에 삭제를 요청하는 기능을 추가한다.

 

DocumentApi.java 

    private Boolean _bulkDocumentWithBulkProcessor(ArrayList<BulkData> bulkList, int bulkActions) {

        boolean terminated = false ;
        BulkProcessor bulkProcessor = _getBulkProcessor(bulkActions);

        for(BulkData data : bulkList) {
            if(data.getActionType().equals(BulkData.Type.CREATE)){
                bulkProcessor.add(new IndexRequest(data.getIndexName()).id(data.getId()).source(data.getJsonMap()));
            }else if(data.getActionType().equals(BulkData.Type.DELETE)){
                bulkProcessor.add(new DeleteRequest(data.getIndexName(), data.getId()));
            }
        }

        try {
            terminated = bulkProcessor.awaitClose(30L, TimeUnit.SECONDS);
            bulkProcessor.close();
        }catch (InterruptedException e){
            log.error(e.getMessage());
        }

        return terminated;
    }

 

 

ElasticSearchSample1.java

 

    @GetMapping("/items/delete")
    public String deleteElasticsearchDoc() {

        BulkData bulkData = new BulkData();
        ArrayList<BulkData> bulkList = new ArrayList<>();

        String id = "item3";
        String indexName = "items";

        bulkData.setId(id);
        bulkData.setActionType(BulkData.Type.DELETE);
        bulkData.setIndexName(indexName);
        bulkList.add(bulkData);

        DocumentApi documentApi = new DocumentApi(client);
        documentApi.bulkDocumentWithBulkProcessor(bulkList, 10000);

        return "elasticsearch/test";
    }

 

인덱스가 items 이고 id가 item3 인 도큐먼트를 삭제한다.

 

결과

 

id값이 item3이 지워진걸 키바나에서 조회시 확인 할 수 있다.