Elastic Search
[LV 1] Elasticsearch 설치 및 기본 환경 설정
JABHACK
2025. 2. 1. 19:44
Elasticsearch 설치 방법
📌 Elasticsearch는 로컬, Docker, 클라우드 환경에서 실행 가능하며, 다양한 플랫폼에서 쉽게 설치할 수 있습니다.
✅ (1) 로컬(Local) 설치
🔹 ① Elasticsearch 다운로드 및 설치
Elasticsearch 공식 사이트에서 최신 버전을 다운로드합니다.
📌 Linux/macOS
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.7.0-linux-x86_64.tar.gz
tar -xzf elasticsearch-8.7.0-linux-x86_64.tar.gz
cd elasticsearch-8.7.0
📌 Windows
- 공식 다운로드 페이지에서 .zip 파일 다운로드.
- 압축을 해제하고 bin/elasticsearch.bat 실행.
🔹 ② Elasticsearch 실행
bin/elasticsearch
✅ 기본적으로 9200번 포트에서 실행됨.
🔹 ③ 실행 확인
curl -X GET "http://localhost:9200/"
✅ 정상적으로 실행되면 Elasticsearch 버전 정보가 출력됨.
✅ (2) Docker를 이용한 설치
🔹 ① Elasticsearch Docker 컨테이너 실행
docker network create elastic
docker run -d --name elasticsearch \
--net elastic \
-p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e "xpack.security.enabled=false" \
elasticsearch:8.7.0
✅ Docker 환경에서 간편하게 실행 가능.
🔹 ② 실행 확인
curl -X GET "http://localhost:9200/"
✅ (3) 클라우드에서 실행 (Elastic Cloud)
- Elasticsearch Service에서 무료 체험 가능.
- AWS, GCP, Azure 등 클라우드 환경에서 손쉽게 배포 가능.
Elasticsearch.yml 기본 설정
config/elasticsearch.yml 파일을 수정하여 클러스터 및 네트워크 설정을 조정할 수 있습니다.
🔹 기본 설정 항목
# 클러스터 이름 설정
cluster.name: my-cluster
# 노드 이름 설정
node.name: node-1
# 외부 IP에서 접근 허용
network.host: 0.0.0.0
# HTTP 포트 설정 (기본 9200)
http.port: 9200
# 클러스터 초기 마스터 노드 지정
cluster.initial_master_nodes: ["node-1"]
✅ Elasticsearch 노드가 클러스터에 올바르게 참여하려면 동일한 cluster.name을 설정해야 함.
클러스터 실행 및 기본 상태 확인
✅ (1) 클러스터 상태 확인
GET _cluster/health
🔹 응답 예시
{
"cluster_name": "my-cluster",
"status": "green",
"number_of_nodes": 3,
"number_of_data_nodes": 2,
"active_primary_shards": 5,
"active_shards": 10
}
✅ green: 정상 / yellow: 일부 복제본 없음 / red: 심각한 문제.
✅ (2) 노드 정보 조회
IP 주소 | 노드명 | 역할 | 상태 |
192.168.1.10 | node-1 | 마스터 | 정상 |
192.168.1.11 | node-2 | 데이터 | 정상 |
192.168.1.12 | node-3 | 데이터 | 정상 |
✅ 현재 클러스터의 모든 노드를 확인 가능.
Elasticsearch 주요 API 사용
Elasticsearch는 JSON 기반의 RESTful API를 제공하며, GET, POST, PUT, DELETE 메서드를 사용하여 데이터 조작이 가능합니다.
✅ (1) 인덱스 생성 (PUT)
PUT /products
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 1
}
}
✅ 프라이머리 샤드 3개, 복제본 1개 설정된 products 인덱스 생성.
✅ (2) 문서 삽입 (POST)
POST /products/_doc/1
{
"name": "Elasticsearch 책",
"category": "IT",
"price": 30000
}
✅ 문서 ID 1을 가진 제품 데이터 삽입.
✅ (3) 문서 조회 (GET)
GET /products/_doc/1
🔹 응답 예시
{
"_index": "products",
"_id": "1",
"_source": {
"name": "Elasticsearch 책",
"category": "IT",
"price": 30000
}
}
✅ 특정 문서를 검색하여 반환.
✅ (4) 문서 업데이트 (POST & PUT)
POST /products/_update/1
{
"doc": {
"price": 28000
}
}
✅ 문서 ID 1의 가격을 28,000으로 업데이트.
✅ (5) 문서 삭제 (DELETE)
DELETE /products/_doc/1
✅ 문서 ID 1 삭제.
✅ (6) 검색 쿼리 실행
GET /products/_search
{
"query": {
"match": {
"name": "Elasticsearch"
}
}
}
✅ "Elasticsearch" 단어가 포함된 모든 문서를 검색.
결론
- Elasticsearch는 로컬, Docker, 클라우드 환경에서 설치 및 실행 가능.
- elasticsearch.yml을 수정하여 클러스터명, 포트, 노드 설정을 조정.
- 클러스터 상태 및 노드 상태를 확인하려면 _cluster/health, _cat/nodes API 활용.
- Elasticsearch 주요 API를 사용하여 데이터를 저장, 검색, 업데이트, 삭제 가능.