
Elasticsearch란?
공식 홈페이지에 의하면
Elasticsearch는 오픈 소스 분산, RESTful 검색 및 분석 엔진, 확장 가능한 데이터 저장소 및 벡터 데이터베이스이다.
라고 정의 되어 있지만 간단히 정리하면, Elasticsearch는 검색, 수집, 데이터 분석에 최적화된 데이터 베이스이다.
Elasticsearch 주요 사례
1. 데이터 수집 및 분석
Elasticsearch는 대규모 데이터(ex. 로그 등)를 수집 및 분석하는 데 최적화되어 있다. 예를들어 Logback을 통하여 서버 로그를 수집하여 트러블 슈팅에 사용한다던지, 서비스에서 사용자 행동에 대한 로그 등 로그 데이터를 수집하여 활용 할 수 있다.
Elasticsearch(데이터 저장), Logstash(데이터 수집 및 가공), Kibana(데이터 시각화)를 활용해 데이터를 분석하고 수집한다.
2. 검색 최적화
Elasticsearch는 데이터가 많더라도 뛰어난 검색 속도를 가지고 있고, 검색에 최적화된 기능을 가지고 있어 유연하고 빠르게 기능 구현을 할 수 있습니다. 또한 쿠팡, 배달의민족, 요기요 등 다양한 기업에서도 이와 같은 장점때문에 Elasticsearch를 활용해 검색기능이 구현되어 있습니다.
예를들어, 아래와 같은 요구사항이 필요할때
- 동의어를 고려한 검색
- 오타를 고려한 검색
- 검색어 자동 완성 기능
- 검색어와 가장 관련성이 높은 순서대로 데이터를 조회하는 기능
Elasticsearch를 사용하여 비교적 간단히 구현 가능하다.
Elasticsearch의 기본용어 정리
용어를 이해하기 쉽게 정리 하기 위해 MySQL과 Elasticsearch를 비교하면서 정리해 보았습니다.
MySQL과 Elasticsearch 둘다 데이터 베이스 입니다. 즉, 기본적으로 데이터를 저장/조회/수정/삭제 할 수 있습니다.
하지만 여기서 용어가 조금씩 다릅니다.
MySQL에서 데이터를 저장하기 위해 가장 먼저 테이블(Table)을 생성하고, 스키마(schema) 정의하고, 컬럼(Column)에 맞게 데이터를 저장 합니다.
Elasticsearch에서 데이터를 저장하기 위해 가정먼저 인덱스(Index)를 생성하고, 매핑(Mapping)을 정의하고, 필드(Field)에 맞게 데이터를 저장 합니다.
※ MySQL과 Elasticsearch 둘다 인덱스(Index)용어가 있는데 이부분에서 혼동을 주의
| MySQL | Elasticsearch |
| 테이블(table) | 인덱스(index) |
| 컬럼(column) | 필드(field) |
| 레코드(record), 로우(row) | 도큐먼트(document) |
| 스키마(schema) | 매핑(mapping) |
Elasticsearch 작동 방식

MySQL은 SQL문을 작성 후 질의 하여 사용 해야한다. 이와 비슷하게 Elasticsearch는 REST API라는 방식을 통해 사용한다
Kibana를 이용하여 Elasticsearch 쉽게 조작하기
Kibana, Elasticsearch 아키텍처

Kibana, Elasticsearch 설치 및 실행
1. docker-compose.yml 파일 작성
services:
elastic:
image: docker.elastic.co/elasticsearch/elasticsearch:8.17.4 # 8.17.4 버전
ports:
- 9200:9200 # 9200번 포트에서 Elasticsearch 실행
environment:
# 아래 설정은 개발/테스트 환경에서 간단하게 테스트하기 위한 옵션 (운영 환경에서는 설정하면 안 됨)
- discovery.type=single-node # 단일 노드
- xpack.security.enabled=false # 보안 설정
- xpack.security.http.ssl.enabled=false # 보안 설정
kibana:
image: docker.elastic.co/kibana/kibana:8.17.4 # 8.17.4 버전
ports:
- 5601:5601 # 5601번 포트에서 kibana 실행
environment:
- ELASTICSEARCH_HOSTS=http://elastic:9200 # kibana가 통신할 Elasticsearch 주소 알려주기
2. docker-compose 실행
# docker-compose.yml 파일이 존재하는 경로에서 아래 명령어를 실행시켜야 함
$ docker compose up -d # -d : 백그라운드에서 실행
3. 실행 확인
Kibana의 기본포트는 5601번 포트에서 실행 됩니다. 브라우저에서 http://localhost:5601로 접속해보자. 아래와 같은 화면이 뜬다면 잘 실행된 것입니다.

4. Kibana로 Elasticsearch 조작하기

5. Kibana로 Elasticsearch에 요청 보내기

MySQL로 따지면 MySQL Workbench, Dbeaver에서 SQL문을 손쉽게 실행 할 수 있듯이. Kibana를 통해 Elasticsearch에 손쉽게 요청 할 수 있다. 단, Elasticsearch는 SQL문대신 RestfulAPI로 데이터를 호출합니다.
예시) GET / 실행(단축키 Ctrl + Enter)
'DB' 카테고리의 다른 글
| [Elasticsearch] 인덱스(Index) 생성 및 도큐먼트(Document) CURD (0) | 2025.12.14 |
|---|---|
| [Redis] Cache-Aside(Lazy Loading) 패턴 적용(With SpringBoot) (0) | 2025.11.16 |
| [Elasticsearch] Elasticsearch Highlight 검색 적용(With SpringBoot) (0) | 2025.11.12 |
| [Redis] Redis 계정 생성 및 systemd 등록 (0) | 2025.05.19 |
| [Redis] Redis 도입을 위한 설치 및 세팅 (1) | 2025.05.18 |
| [Oracle] EXISTS VS COUNT 성능 차이 (0) | 2025.04.05 |
| [MariaDB/MySQL] general_log 설정 및 확인하기 (0) | 2024.08.26 |
| [MariaDB/MySQL] DB 환경 세팅(2) - MariaDB Server 외부 접속을 위한 방화벽(Firewall) 세팅 (0) | 2024.07.31 |