동일한 환경에서 실습을 진행하기 위해 아래 버전을 사용할 것을 권장한다.
Spring Boot 프로젝트 셋팅

Spring Boot DevTools, Spring Web, Spring Data Elasticsearch (Access+Driver)를 선택해라.
Spring Data Elasticsearch는 Spring Data JPA와 비슷한 원리로 작동하는 Elasticsearch 라이브러리이다.불필요한 테스트 코드 삭제

application.yml에 Elasticsearch 연결을 위한 정보 작성하기
이 프로젝트에서는
application.properties를 지우고application.yml을 생성했다.
application.yml
spring:
elasticsearch:
uris: <http://localhost:9200> # 연결할 Elasticsearch 주소
logging:
level:
org.elasticsearch.client: TRACE # Elasticsearch의 쿼리 로그를 출력
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;
}
}
getActive()라고 만들지 말고 getIsActive()라고 메서드명을 지어주자. 그리고 일관성을 위해 setActive()라고 만들지 말고 setIsActive()라고 메서드명을 지어주자.Repository 생성하기
UserDocumentRepository
public interface UserDocumentRepository extends ElasticsearchRepository<UserDocument, String> {
}
참고) 최소 1개 이상의 ElasticsearchRepository가 존재해야, Spring Boot를 실행시킬 때 Elasticsearch와 연결을 시도한다.
Spring Boot 프로젝트 실행시키기

Spring Boot 프로젝트를 실행시켰을 때 에러가 뜨지 않고 위 로그가 찍혀있다면 정상적으로 Elasticsearch와 연결이 된 것이다.
<aside> 👨🏻🏫
에러를 일부러 발생시켜서 어떤 식으로 에러 메시지가 뜨는 지 테스트해보자. 이런 방식으로 에러 형태를 미리 봐두면 나중에 트러블 슈팅할 때 도움이 많이 된다.
</aside>
application.yml 수정하기
spring:
elasticsearch:
# Elasticsearch가 실행이 안 되고 있다는 걸 가정 or 주소를 잘못 입력했을 때를 가정
**uris: <http://localhost:9999>**
logging:
level:
org.elasticsearch.client: TRACE
Spring Boot 프로젝트 실행시켜보기

Elasticsearch와 연결이 안 될 경우 Connection refused라는 에러 메시지가 출력된다.
다시 원래대로 application.yml 수정하기
spring:
elasticsearch:
**uris: <http://localhost:9200>**
logging:
level:
org.elasticsearch.client: TRACE