Elasticsearch에 대해 공부 후에 실제로 적용해보았습니다.
프로젝트 환경
- java 11
- spring boot 2.7.14
- elasticsearch 4.4.14
dependencies
implementation 'org.springframework.boot:spring-boot-starter-data-elasticsearch'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
Config 작성
Elasticsearch에 접속하기 위해 username, password가 필요하기에 CredentialsProvider를 생성해서 설정해주었습니다.
@Configuration
public class ElasticConfig extends AbstractElasticsearchConfiguration {
@Override
public RestHighLevelClient elasticsearchClient() {
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY,
new UsernamePasswordCredentials("username", "password"));
RestClientBuilder builder = RestClient.builder(HttpHost.create("localhost:9200"))
.setHttpClientConfigCallback(httpClientBuilder -> {
try {
return httpClientBuilder
.setDefaultCredentialsProvider(credentialsProvider)
.setSSLContext(SSLContext.getDefault());
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
});
return new RestHighLevelClient(builder);
}
}
Repository 작성
ElasticsearchRepository를 상속받아주면 됩니다.
public interface UserRepository extends ElasticsearchRepository<User, String> {
}
User Document 작성
user라는 인덱스에 저장할 document의 형식을 작성합니다.
@AllArgsConstructor
@NoArgsConstructor
@Data
@Document(indexName = "user")
public class User {
@Id
private String id;
private String name;
private Integer age;
}
Controller 작성
간단한 테스트를 위한 컨트롤러를 작성해보았습니다.
@RequiredArgsConstructor
@RestController
public class UserController {
private final UserRepository userRepository;
@PostMapping("/api/register")
public String register(){
User user = new User("1","연준",28);
userRepository.save(user);
return "성공";
}
@DeleteMapping("/api/register")
public String delete(){
User user = new User("1","연준",28);
userRepository.delete(user);
return "성공";
}
}
'DB' 카테고리의 다른 글
정규화 (0) | 2024.01.23 |
---|---|
Elasticsearch 테스트 (0) | 2024.01.10 |
Elasticsearch 란? (1) | 2024.01.10 |
[MySQL] SELECT 문 (0) | 2024.01.05 |
[MySQL] 계정 생성 및 권한 부여 (0) | 2024.01.05 |