
▶ 들어가며
이번 글에서는 이전 포스팅에 이어서, Elasticsearch를 MySQL과 비교하며 아키텍처 관점에서 어떻게 다른지 살펴보고,
직접 Kibana를 사용한 개발 환경 세팅까지 진행해보려고 한다.
단순히 개념으로만 이해하는 것이 아니라,
- 요청이 어떤 방식으로 전달되는지
- 실제로 Elasticsearch가 잘 동작하는지
까지 확인하는 것을 목표로 한다.
▶ Elasticsearch 아키텍처
Elasticsearch의 기본적인 동작 흐름은 다음과 같다.
-MySQL의 요청 흐름

-Elasticsearch의 요청 흐름

여기서 가장 중요한 점은
👉 REST API 기반으로 동작한다는 점이다.
자체 문법을 실행하는 방식이 아니라 우리에게 익숙한 HTTP 요청을 통해 데이터를 삽입하고 조회한다.
예를 들어 데이터를 삽입한다고 가정하면,
- MySQL
INSERT INTO user (name, age)
VALUES ('bo', 26);
- Elasticsearch
curl -X POST "http://localhost:9200/user/_doc" \
-H "Content-Type: application/json" \
-d '{
"name": "bo",
"age": 26
}'
조회 역시 마찬가지로, SQL 대신 HTTP 기반 요청으로 처리된다.
이 점 덕분에 Elasticsearch는 웹 서비스와의 연동, 검색 기능 구현에 특히 잘 어울린다.
▶ Elasticsearch의 GUI, Kibana
위에서 본 것처럼 cli를 매번 사용하여 요청을 보내고 테이블을 일일이 확인하는것은 여간 번거러운 일이 아님을 알고있을 것이다. MySQL을 공부하면서 이러한 번거로음을 줄이기 위해서
- MySQL Workbench
- DataGrip
같은 GUI 도구를 사용하듯이,
Elasticsearch 역시 매번 Postman이나 curl로 요청을 보내는 것은 번거롭다.
그래서 Elasticsearch에서는
👉 Kibana라는 GUI 도구를 함께 사용한다.
Kibana를 사용하면 데이터 조회, 인덱스 관리, 쿼리 테스트 를 훨씬 직관적으로 할 수 있다.
-Kibana 세팅 구조
전체 흐름을 정리하면 다음과 같다.

- 5601 포트: Kibana
- 9200 포트: Elasticsearch REST API
▶ 개발 환경 세팅
서로 다른 개발환경을 통일시킬 수 있는 Docker를 사용하여 Docker위헤 Elastic과 Kibana를 띄우는 방식으로 세팅을 해볼 것이다.
도커 관련 지식이나 막혔을때는 인터넷을 찾아서 하는것이 훨씬 빠를것이다.
- docker-compose.yml 파일을 작성/수정
- Elasticsearch + Kibana를 동시에 실행
version: "3.8"
services:
elastic:
image: docker.elastic.co/elasticsearch/elasticsearch:9.2.4
ports:
- "9200:9200"
environment:
- discovery.type=single-node
- xpack.security.enabled=false
- xpack.security.http.ssl.enabled=false
kibana:
image: docker.elastic.co/kibana/kibana:9.2.4
ports:
- "5601:5601"
environment:
- ELASTICSEARCH_HOSTS=http://elastic:9200
depends_on:
- elastic
- elastic과 kibana 버전이 반드시 맞아야 함. 다르니까 안됐음.
이후 postman으로 localhost:9200의 GET요청과 브라우저에서 http://localhost:5601 주소로 접속했을때 응답이 200OK로 오거나 접속창이 로딩되면 성공!.


- 모두 정상적으로 뜬다면
👉 Elasticsearch와 Kibana가 잘 실행 중이라는 의미다.
햄버거 바에서 "Dev Tools"를 찾아서 GUI로 편하게 요청을 보낼 수있게 된 나. 기존에 Postman이나 curl로 직접 보내던 REST API 요청을
GET /
과 같은 요청으로 Kibana 내부에서 바로 실행하며 결과를 확인할 수 있다.

👉 훨씬 간편하게 실행할 수 있다. 따봉!
'📌Develop > Elasticsearch' 카테고리의 다른 글
| [Elasticsearch] Elasticsearch 기본용어와 CRUD 명령어 (0) | 2026.02.17 |
|---|---|
| [Elasticsearch] ELK stack에 관하여 (0) | 2026.02.05 |
| [Elasticsearch] Elasticsearch 입문하기 (0) | 2026.02.03 |