본문 바로가기

DB

[Elasticsearch] 인덱스(Index) 생성 및 도큐먼트(Document) CURD

인덱스(Index) 생성 / 조회 / 삭제

Elasticsearch에서 인덱스(Index)를 생성하는 건 MySQL에서 테이블(Table)을 생성하는 것과 같습니다.

 

인덱스 생성 및 조회

# 인덱스 생성
# PUT /{인덱스명}
PUT /users

# 인덱스 생성됐는 지 확인하기
# GET /{인덱스명}
GET /users

인덱성 생성됐는지 확인

 

인덱스 삭제

# 인덱스 삭제
# DELETE /{인덱스명}
DELETE /users

 

매핑(Mapping) 정의

Elasticsearch에서 매핑(Mapping)을 정의하는 건 MySQL에서 테이블의 스키마(Schema)를 정의하는 것과 같다.

# 매핑 정의하기
# PUT /{인덱스명}/_mappings
PUT /users/_mappings
{
 "properties": {
 "name": { "type": "keyword" },
 "age": { "type": "integer" },
 "is_active": { "type": "boolean" }
 }
}

# 인덱스 매핑 정의 확인
GET /users

 

인덱스 매핑 정의 확인

 

인덱스(Index) 생성과 매핑(Mapping)을 동시에 진행 할 수도 있습니다

PUT /users
{
  "mappings": {
    "properties": {
      "name" : {"type":"keyword"},
      "age" : {"type":"integer"},
      "is_active" : {"type":"boolean"}
    }
  }
}

 

도큐먼트(Document) 저장 / 조회 / 수정 / 삭제

Elasticsearch에서 도큐먼트(Document)를 삽입하는 건 MySQL에서 테이블에 레코드(Record)를 삽입하는 것과 같다

 

1. 도큐먼트 저장

# 도큐먼트 삽입
# POST /{인덱스명}/_doc
POST /users/_doc
{
 "name": "Alice",
 "age": 28,
 "is_active": true
}
POST /users/_doc
{
 "name": "Bob",
 "age": 30,
 "is_active": false
}

# 모든 도큐먼트 조회
# GET /{인덱스명}/_search
GET /users/_search

도큐먼트(Document) 조회 시 응답값

2. 도큐먼트 저장(id 직접 지정)

# 도큐먼트 저장 (id 직접 지정)
# POST /{인덱스명}/_create/{id}
POST /users/_create/1
{
 "name": "luckystrike",
 "age": 30,
 "is_active": true
}

# 특정 아이디 조회
GET /users/_doc/1

 

도큐먼트 입력 후 확인

 

3. id를 직접 지정해서 저장 (이미 id가 존재한다면 데이터 덮어씌움) - UPSERT

# 도큐먼트 저장 및 업데이트
# PUT /{인덱스명}/_doc/{id}

# id 2가 없으므로 Insert
PUT /users/_doc/2
{
 "name": "steve",
 "age": 31,
 "is_active": true
}

# id 1이 있으므로 Update
PUT /users/_doc/1
{
 "name": "럭키비키",
 "age": 31,
 "is_active": true
}

 

UPSERT 결

 

5. 모든 도큐먼트 조회

# GET /{인덱스명}/_search
GET /users/_search

 

6. id로 특정 도큐먼트 조회

# 특정 도큐먼트 조회
# GET /{index}/_doc/{id}
GET /users/_doc/1
GET /users/_doc/2

 

7. 도큐먼트 수정

# PUT /{인덱스명}/_doc/{id}
PUT /users/_doc/1
{
 "name": "jobs"
}

 

8. 도큐먼트 삭제

# id로 도큐먼트 삭제하기
# DELETE /{인덱스명}/_doc/{id}
DELETE /users/_doc/2

 

Elasticsearch의 인덱스(Index) 생성과 도큐먼트(Document) CRUD(저장·조회·수정·삭제)를 정리해 보았습니다.
MySQL은 SQL 문(INSERT/SELECT/UPDATE/DELETE)으로 데이터를 다루는 반면, Elasticsearch는 REST API 기반으로 HTTP 메서드(GET/POST/PUT/DELETE 등)를 활용해 CRUD를 수행합니다.
처음엔 이 방식이 익숙하지 않아 조금 불편하게 느껴질 수 있지만, 몇 번만 직접 호출해 보면서 연습하면 금방 익숙해질 수 있습니다.