Elasticsearch의 도큐먼트 URL 구조
데이터 입력 (Create & Update)
✅ PUT 요청으로 도큐먼트 입력
PUT my_index/_doc/1
{
"name": "Jongmin Kim",
"message": "안녕하세요 Elasticsearch"
}
- 결과 예시
{
"_index": "my_index",
"_type": "_doc",
"_id": "1",
"_version": 1,
"result": "created",
"_shards": {"total": 2, "successful": 1, "failed": 0},
"_seq_no": 0,
"_primary_term": 1
}
- 같은 ID로 다시 입력하면 기존 데이터가 덮어쓰기(Overwrite)되며 "result": "updated" 로 변경됩니다.
✅ 데이터 덮어쓰지 않고 새 도큐먼트만 입력 (_create 사용)
PUT my_index/_create/1
{
"name": "Jongmin Kim",
"message": "안녕하세요 Elasticsearch"
}
데이터 조회 (Read)
✅ GET 요청으로 도큐먼트 조회
GET my_index/_doc/1
- 응답 예시:
{
"_index": "my_index",
"_type": "_doc",
"_id": "1",
"_version": 1,
"found": true,
"_source": {
"name": "Jongmin Kim",
"message": "안녕하세요 Elasticsearch"
}
}
- 삭제된 도큐먼트 또는 없는 도큐먼트 조회 시
{
"_index": "my_index",
"_type": "_doc",
"_id": "1",
"found": false
}
데이터 수정 (Update)
✅ 부분 업데이트 (_update API 사용)
- 특정 필드만 수정할 때 사용 (doc 키워드 활용)
POST my_index/_update/1
{
"doc": {
"message": "안녕하세요 Kibana"
}
}
- 응답 결과 (_version 증가)
{
"_index": "my_index",
"_type": "_doc",
"_id": "1",
"_version": 2,
"result": "updated",
"_shards": {"total": 2, "successful": 1, "failed": 0}
}
- 주의사항: 내부적으로 기존 도큐먼트를 가져와 변경 후 새 도큐먼트로 재저장하는 방식이므로 부분 업데이트처럼 보이지만 실제로는 전체 덮어쓰기가 발생합니다.
데이터 삭제 (Delete)
✅ 도큐먼트 삭제
DELETE my_index/_doc/1
- 응답 결과
{
"_index": "my_index",
"_type": "_doc",
"_id": "1",
"result": "deleted"
}
- 삭제된 도큐먼트 조회 시
{
"_index": "my_index",
"_type": "_doc",
"_id": "1",
"found": false
}
✅ 전체 인덱스 삭제
DELETE my_index
자동 생성되는 도큐먼트 ID 활용
✅ POST 요청으로 자동 생성되는 도큐먼트 ID
POST my_index/_doc
{
"name": "Jongmin Kim",
"message": "안녕하세요 Elasticsearch"
}
- 응답 결과 (_id가 자동 생성됨)
{
"_index": "my_index",
"_type": "_doc",
"_id": "ZuFv12wBspWtEG13dOut",
"_version": 1,
"result": "created"
}
Elasticsearch 6.x 이전 버전과의 차이점
항목 |
6.x 이전 버전 |
7.0 이후 |
도큐먼트 URL 구조 |
/index/type/id |
/index/_doc/id |
새 도큐먼트 입력 |
PUT index/type/id/_create |
PUT index/_create/id |
부분 업데이트 (_update API) |
POST index/type/id/_update |
POST index/_update/id |
✅ 정리
작업 |
HTTP 메서드 |
예제 |
도큐먼트 입력 |
PUT |
PUT my_index/_doc/1 |
자동 ID 생성 |
POST |
POST my_index/_doc |
부분 업데이트 |
POST |
POST my_index/_update/1 {"doc": {"message": "변경됨"}} |
도큐먼트 조회 |
GET |
GET my_index/_doc/1 |
도큐먼트 삭제 |
DELETE |
DELETE my_index/_doc/1 |
전체 인덱스 삭제 |
DELETE |
DELETE my_index |
🎯 추가로 알아두면 좋은 개념
- 버전 관리 (_version): Elasticsearch는 도큐먼트의 변경 시 버전을 증가시킵니다.
- 샤드 & 레플리카: 데이터를 분산 저장하여 고가용성을 유지합니다.
- Query DSL: 복잡한 검색 기능을 위한 JSON 기반의 질의 언어입니다.
- Bulk API: 대량의 데이터를 한 번에 처리할 수 있는 API입니다.