✅ Spring Boot에 Elasitcsearch 연결하기

동일한 환경에서 실습을 진행하기 위해 아래 버전을 사용할 것을 권장한다.

  1. Spring Boot 프로젝트 셋팅

    start.spring.io

    image.png

  2. 불필요한 테스트 코드 삭제

    image.png

  3. application.yml에 Elasticsearch 연결을 위한 정보 작성하기

    이 프로젝트에서는 application.properties를 지우고 application.yml을 생성했다.

    application.yml

    spring:
      elasticsearch:
        uris: <http://localhost:9200> # 연결할 Elasticsearch 주소
    
    logging:
      level:
        org.elasticsearch.client: TRACE # Elasticsearch의 쿼리 로그를 출력
    
  4. Document 생성하기

    UserDocument

    @Document(indexName = "users") // users 인덱스의 Document임을 명시
    public class UserDocument {
      @Id 
      private String id; // Elasticsearch에서는 Document ID를 문자열(String)으로 다룸
    
      @Field(type = FieldType.Keyword) // 매핑 정의 : keyword 타입
      private String name;
    
      @Field(type = FieldType.Long) // 매핑 정의 : long 타입
      private Long age; 
    
      @Field(type = FieldType.Boolean) // 매핑 정의 : boolean 타입
      private Boolean isActive; 
      
      public UserDocument(String id, String name, Long age, Boolean isActive) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.isActive = isActive;
      }
    
      public String getId() {
        return id;
      }
    
      public String getName() {
        return name;
      }
    
      public Long getAge() {
        return age;
      }
    
      public Boolean getIsActive() {
        return isActive;
      }
      
      public void setId(String id) {
        this.id = id;
      }
    
      public void setName(String name) {
        this.name = name;
      }
    
      public void setAge(Long age) {
        this.age = age;
      }
    
      public void setIsActive(Boolean isActive) {
        this.isActive = isActive;
      }
    }
    
  5. Repository 생성하기

    UserDocumentRepository

    public interface UserDocumentRepository extends ElasticsearchRepository<UserDocument, String> {
    }
    

    참고) 최소 1개 이상의 ElasticsearchRepository가 존재해야, Spring Boot를 실행시킬 때 Elasticsearch와 연결을 시도한다.

  6. Spring Boot 프로젝트 실행시키기

    image.png

    Spring Boot 프로젝트를 실행시켰을 때 에러가 뜨지 않고 위 로그가 찍혀있다면 정상적으로 Elasticsearch와 연결이 된 것이다.

✅ Spring Boot와 Elasticsearch가 연결이 안 됐을 때 발생하는 에러

<aside> 👨🏻‍🏫

에러를 일부러 발생시켜서 어떤 식으로 에러 메시지가 뜨는 지 테스트해보자. 이런 방식으로 에러 형태를 미리 봐두면 나중에 트러블 슈팅할 때 도움이 많이 된다.

</aside>

  1. application.yml 수정하기

    spring:
      elasticsearch:
    	  # Elasticsearch가 실행이 안 되고 있다는 걸 가정 or 주소를 잘못 입력했을 때를 가정
        **uris: <http://localhost:9999>**
    
    logging:
      level:
        org.elasticsearch.client: TRACE
    
  2. Spring Boot 프로젝트 실행시켜보기

    image.png

    Elasticsearch와 연결이 안 될 경우 Connection refused라는 에러 메시지가 출력된다.

  3. 다시 원래대로 application.yml 수정하기

    spring:
      elasticsearch:
        **uris: <http://localhost:9200>**
    
    logging:
      level:
        org.elasticsearch.client: TRACE