
인덱스(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

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
}

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를 수행합니다.
처음엔 이 방식이 익숙하지 않아 조금 불편하게 느껴질 수 있지만, 몇 번만 직접 호출해 보면서 연습하면 금방 익숙해질 수 있습니다.
'DB' 카테고리의 다른 글
| [Elasticsearch] 기본 개념 및 조작하기 (1) | 2025.12.12 |
|---|---|
| [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 |