스프링에서 ElasticSearch에 첨부파일 색인하는 방법입니다.
위의 코드는 클라이언트로부터 받은 첨부파일을 색인하는 insertFile 메소드입니다.(112 ~ 128라인)
먼저 멀티파트 요청의 첨부파일을 saveFileToDisk 메소드를 통해 서버에 저장합니다.(130 ~ 147라인)
saveFileToDisk 메소드는 저장한 첨부파일 리스트를 리턴합니다.(146라인)
첨부파일 리스트 개수가 2개 이상이면 bulkFileElastic 메소드를 호출하고
1개면 saveFileElastic 메소드를 호출합니다.(123 ~ 127라인)
bulkFileElastic 메소드는 2개 이상의 첨부파일을 한 번에 색인하는 메소드입니다.(149 ~ 170라인)
이전에 제가 작성한 ElasticSearch bulk API는 데이터를 json 파일에 작성해서 색인한 것을 한번 참고하시기 바랍니다.
https://tiqndjd12.tistory.com/223
이번에는 json 데이터를 HTTP BODY에 추가하여 색인했습니다.(153 ~ 161라인)
색인할 첨부파일이 2개 이상이면 bulk API를 사용하여 한번에 처리하는 것이 더 효율적입니다.
첨부파일을 하나씩 색인하게 되면 잦은 오버헤드가 발생하기 때문입니다.
saveFileElastic 메소드는 1개의 첨부파일을 색인하는 메소드입니다.(172 ~ 191라인)
bulkFileElastic와 saveFileElastic 메소드에서 공통적으로 호출하는 convertFile 메소드가 있습니다.(160, 175라인)
convertFile 메소드는 첨부파일의 내용을 Base64로 인코딩하여 리턴하고 있습니다.
첨부파일의 내용이 특수문자가 포함된 경우 그대로 색인하면 인코딩 문제가 발생할 수 있기 때문에 Base64로 인코딩해야 합니다.
REST API의 POST 메소드 방식을 통해 첨부파일의 내용을 ElasticSearch에 색인합니다.
bulkFileElastic 메소드를 디버깅해서 bulk API에 전달할 데이터를 조회하면
위와 같이 json 데이터가 생성된 것을 확인할 수 있습니다.
bulk API로 색인한 첨부파일이 정상적으로 실행된 것을 확인할 수 있습니다.
1건의 첨부파일을 색인하는 saveFileElastic 메소드를 디버깅해서 json데이터를 조회화면
위와 같이 json 데이터가 생성된 것을 확인할 수 있습니다.
1건의 첨부파일이 정상적으로 색인된 것을 확인할 수 있습니다.
spring-data-elasticsearch를 사용하여 색인할 수 있지만 REST API를 통해 ElasticSearch에 색인할 수 있습니다.
'dev > 스프링' 카테고리의 다른 글
Spring ElasticSearch Snapshot Backup Restore (0) | 2024.05.21 |
---|---|
Spring ElasticSearch 첨부파일 조회 (0) | 2024.05.12 |
Spring ClassPathResource (0) | 2024.04.21 |
Spring Controller ResponseEntity (0) | 2024.04.20 |
Spring RestControllerAdvice (0) | 2024.03.29 |