안녕하세요! 오늘은 현대 검색 시스템의 강자, Elasticsearch에 대해 알아볼게요.
Elasticsearch가 뭔가요? 🤔
도서관에서 책을 찾는 것을 상상해보세요:
- 일반 DB는 책장을 하나하나 둘러보는 것
- Elasticsearch는 도서관 검색 시스템으로 즉시 찾는 것!
즉, Elasticsearch는:
- 분산형 검색 및 분석 엔진
- JSON 기반의 문서 저장소
- 실시간 검색과 분석이 가능한 마법상자 ✨
핵심 개념 📚
1. Index (색인)
PUT /books
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 1
}
}
- 마치 데이터베이스의 테이블 같은 개념
- 비슷한 특성을 가진 문서들의 모음
2. Document (문서)
POST /books/_doc
{
"title": "엘라스틱서치 완벽 가이드",
"author": "김개발",
"tags": ["검색엔진", "데이터분석"],
"price": 35000
}
- 실제 저장되는 데이터 단위
- JSON 형태로 저장
어떻게 동작하나요? 🎯
1. 색인 과정
텍스트 입력 → 형태소 분석 → 역색인 구조 생성
예를 들면:
"엘라스틱서치는 정말 편리해요"
↓
엘라스틱서치 (1번 문서)
정말 (1번 문서)
편리 (1번 문서)
2. 검색 과정
GET /books/_search
{
"query": {
"match": {
"title": "엘라스틱서치"
}
}
}
강력한 기능들 💪
- Full-Text Search
- 형태소 분석으로 정확한 검색
- 오타 교정 기능 제공
- 실시간 분석
GET /logs/_search { "aggs": { "popular_tags": { "terms": { "field": "tags" } } } }
- 지리 정보 검색
GET /stores/_search { "query": { "geo_distance": { "distance": "5km", "location": { "lat": 37.5665, "lon": 126.9780 } } } }
실제 사용 사례 🌟
1. 쇼핑몰 검색
@RestController
public class ProductSearchController {
@GetMapping("/search")
public List<Product> searchProducts(@RequestParam String keyword) {
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder()
.query(QueryBuilders.matchQuery("name", keyword));
return elasticsearchClient.search(searchSourceBuilder);
}
}
2. 로그 분석
// 에러 로그 집계
GET /logs/_search
{
"query": {
"match": {
"level": "ERROR"
}
},
"aggs": {
"error_over_time": {
"date_histogram": {
"field": "timestamp",
"interval": "1h"
}
}
}
}
주의할 점 ⚠️
- 메모리 관리
- JVM 힙 크기는 물리 메모리의 50% 이하로
- 너무 큰 힙은 오히려 성능 저하!
- 샤드 관리
- 너무 많은 샤드 = 관리 어려움
- 너무 적은 샤드 = 확장성 제한
마치며 🎁
Elasticsearch는 마치 도서관의 완벽한 사서와 같습니다. 방대한 데이터 속에서 원하는 정보를 빠르고 정확하게 찾아주죠. 검색 기능이 필요한 서비스라면 꼭 한번 고려해보세요!
더 궁금하신 점 있으시다면 댓글 남겨주세요! 😊
728x90
'600===Dev AWS > ElasticSearch' 카테고리의 다른 글
Elasticsearch가 DB보다 빠른 이유: 비밀은 역색인! 🚀 (0) | 2024.10.30 |
---|---|
What is an inverted index, and why is it crucial for ElasticSearch? (0) | 2024.06.09 |
ElasticSearch Introduced (0) | 2024.06.09 |