2019. 3. 24. 15:14ㆍ[정리] 데이터베이스/[NoSQL] ElasticSearch
엘라스틱 서치를 스프링과 연동하는 방법
1. 스프링에서 지원하는 Spring-data-elasticsearch 모듈을 다운받아 elasticsearchRepository 인터페이스를 이용하는 법
2. 스프링에서 지원하는 Spring-data-elasticsearch 모듈을 다운받아 elasticsearchTemplate 객체를 이용하는 법
3. ES에서 지원하는 Low level REST Client 모듈을 다운받아 RestClient 클래스를 사용하는 법
4. ES에서 지원하는 High level REST Client 모듈을 다운받아 HighLevelRestClient 클래스를 사용하는 법
사용해보면서 느낀 장단점
1. ElasticsearchRepository
+ 스프링에서 지원해주는 방식으로 JPA와 사용법이 거의 유사하다.
- 엔티티에 @Document(인덱스, 타입) 을 명시해야하기 때문에 인덱스 이름을 바꿔가며 엔티티를 사용할 수 없다.
2. elasticsearchTemplate
+ JPA를 모르는 상태에서도 모듈의 사용법만 얼추 익히면 사용이 가능하다.
+ application.properties만 조금만 만져주면 elasticsearchTemplate 를 빈으로 생성할 필요도 없이 자동으로 만들어준다.
- 엔티티에 @Document(인덱스, 타입) 을 명시해야하기 때문에 인덱스 이름을 바꿔가며 엔티티를 사용할 수 없다.
3. RestClient
+ ES를 아예 REST API로 통신하는 방법, curl 통신과 똑같다.
+ 통신을 위해 헤더, 바디를 작성할 때 사용자가 Json 으로 직접 작성하는 방식이라서 ES 모듈과의 의존성이 거의 없다.
+ 사실상 curl 통신과 똑같기 때문에 ES의 모든 기능을 사용할 수 있다.
- Request, Response 를 위한 Json 통신용 클래스를 일일히 만들어줘야한다는 불편함이 있다.
4. HighLevelRestClient
+ ES를 아예 REST API로 통신하는 방법
+ 통신을 위해 헤더, 바디를 작성할 때 리퀘스트 빌더를 이용하여 리퀘스트 데이터를 전달하는 방식이라서 편하다.
+ Request, Response 를 위한 Json 통신용 클래스를 일일히 만들지 않아도 된다.
- ES 모듈에 의존성이 높은 편이다.
1, 2번 방식 사용 참고문서
3, 4번 방식 사용 참고문서
0. 공식문서
1. (2018.07) KWANGSIK LEE's log
'[정리] 데이터베이스 > [NoSQL] ElasticSearch' 카테고리의 다른 글
Properties에서 Index 필드의 설정값, Search 짧은 지식 (0) | 2019.04.06 |
---|---|
엘라스틱 서치 String이 사라진 이유 (0) | 2019.04.02 |
[2019.03.14] 엘라스틱 서치 (클러스터 설정 방법, 플러그인) (0) | 2019.03.14 |
[2019.03.14] 엘라스틱 서치 (Mapping, 검색 detail) (0) | 2019.03.14 |
[2019.03.14] 엘라스틱 서치 강의 정리 (0) | 2019.03.14 |