Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Generics
- Spring
- 계산기 만들기
- web
- 완전탐색
- til
- 코딩테스트
- Baekjoon
- 내일배움캠프
- 알고리즘
- 백준
- 프로그래머스
- 브루트포스
- ES
- 프로젝트
- CSS
- parametric search
- 객체지향
- OOP
- 이분 탐색
- BFS
- binary search
- programmers
- Elasticsearch
- Java
- 이분탐색
- 구현
- 누적합
- SpringBoot
- Algorithm
Archives
- Today
- Total
개발하는 햄팡이
[ES] Elasticsearch8.x.x & SpringBoot 연동 세팅하기 본문
원래는 elasticsearch config와 kibana config를 먼저 세팅해야하는 것이 맞지만 기능개발이 조금 급해서 세팅부터 하는 것으로 했다...
1. dependency 추가
implementation 'org.springframework.boot:spring-boot-starter-data-elasticsearch'
implementation group: 'co.elastic.clients', name: 'elasticsearch-java', version: '8.13.3'
2. application.properties & .env
우리는 세팅을 application.yaml형태로 하기로 해서
아래와 같이 설정했다.
# Elasticsearch Settings
elasticsearch:
url: ${ELASTICSEARCH_URL}
username: ${ELASTICSEARCH_USERNAME}
password: ${ELASTICSEARCH_PASSWORD}
fingerprint: ${ELASTICSEARCH_FINGERPRINT}
이 후 .env파일에 각 값을 입력
# ElasticSearch
ES_URL=localhost:9200
ES_USER_NAME=elastic
ES_USER_PASSWORD=elastic
ES_FINGERPRINT=비밀~~
3. ESConfig class파일
import co.elastic.clients.transport.TransportUtils;
import javax.net.ssl.SSLContext;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.elasticsearch.client.ClientConfiguration;
import org.springframework.data.elasticsearch.client.elc.ElasticsearchConfiguration;
@Configuration
public class ESConfig extends ElasticsearchConfiguration {
// Elasticsearch 호스트 URL (예: https://localhost:9200)
@Value("${elasticsearch.url}")
private String host;
// Elasticsearch 기본 사용자 이름
@Value("${elasticsearch.username}")
private String username;
// Elasticsearch 기본 사용자 비밀번호
@Value("${elasticsearch.password}")
private String password;
// Elasticsearch 인증서 지문 (SSL 인증서와 연결된 Fingerprint)
@Value("${elasticsearch.fingerprint}")
private String fingerprint;
@NotNull
@Override
public ClientConfiguration clientConfiguration() {
// 주어진 fingerprint를 이용하여 SSLContext 생성
SSLContext sslContext = TransportUtils.sslContextFromCaFingerprint(fingerprint);
// Elasticsearch 클라이언트 설정
return ClientConfiguration.builder()
.connectedTo(host) // 연결할 Elasticsearch 호스트
.usingSsl(sslContext) // SSL 사용 및 호스트 이름 검증 활성화
.withBasicAuth(username, password) // 기본 인증 설정
.build();
}
}
Elasticsearch 8.x.x부터는 기본적으로 HTTPS프로토콜이 활성화 되어있어 보안을 위해 자체 서명된 SSL 인증서를 이용하여 연결할 수 있게 했다.
Elastic을 처음 실행하면 username을 default로 elastic으로 주고, password, fingerprint, enrollmentToken을 주는데 이때 부는 fingerprint로 elasticsearch 서버에 접근할 수 있다.
개발환경에서는 .usingSsl(sslContext, (hostname, session) -> true)로 하면 ssl검증을 안해서 fingerprint가 필요없어진다.
다음에는 내 프로젝트에 맞게 index구조와 index template을 설정하고 한글 tokenizer인 nori를 설치하고 여러 세팅을 해볼 예정이다!
'Database > Elasticsearch' 카테고리의 다른 글
[ES] 공지사항 게시판 검색 기능 구현하기(1) : Elasticsearch 인덱스 구조 설계 (0) | 2024.11.12 |
---|---|
[ES] Elasticsearch & Kibana 8.x.x 로컬에서 실행하기 (0) | 2024.09.27 |