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

  1. 공식 다운로드 페이지에서 .zip 파일 다운로드.
  2. 압축을 해제하고 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" 단어가 포함된 모든 문서를 검색.


결론

  1. Elasticsearch는 로컬, Docker, 클라우드 환경에서 설치 및 실행 가능.
  2. elasticsearch.yml을 수정하여 클러스터명, 포트, 노드 설정을 조정.
  3. 클러스터 상태 및 노드 상태를 확인하려면 _cluster/health, _cat/nodes API 활용.
  4. Elasticsearch 주요 API를 사용하여 데이터를 저장, 검색, 업데이트, 삭제 가능.