실전에서 바로 써먹는 Elasticsearch 입문 (검색 최적화편)
create-index-mapping-insert-doc
✅ 인덱스(index) 생성, 조회 및 삭제
Elasticsearch에서 인덱스(index)를 생성하는 건 MySQL에서 테이블(table)을 생성하는 것과 같다.
인덱스 생성 및 조회
# 인덱스 생성
# PUT /{인덱스명}
PUT /users
# 인덱스 생성됐는 지 확인하기
# GET /{인덱스명}
GET /users
# 없는 인덱스를 조회했을 때 응답값 확인하기
GET /abc
참고) 위 명령어를 입력했을 때 나오는 응답값의 모든 의미를 처음부터 다 알 필요없다. 그러니 부담갖지 말고 핵심 기능에 초점을 맞춰 학습하자. (파레토의 법칙)
인덱스 삭제
# 인덱스 생성
PUT /boards
# 인덱스 생성됐는 지 확인하기
GET /boards
# 인덱스 삭제
# DELETE /{인덱스명}
DELETE /boards
# 삭제됐는 지 확인하기
GET /boards
✅ 매핑(mapping) 정의
Elasticsearch에서 매핑(mapping)을 정의하는 건 MySQL에서 테이블의 스키마(schema)를 정의하는 것과 같다.
# 매핑 정의하기
# PUT /{인덱스명}/_mappings
PUT /users/_mappings
{
"properties": {
"name": { "type": "keyword" },
"age": { "type": "integer" },
"is_active": { "type": "boolean" }
}
}
# 정의한 매핑 확인하기
GET /users
참고) 매핑(mapping)의 타입이나 특징에 대해서는 나중에 다시 한 번 자세히 다룰 예정이다.
✅ 도큐먼트(document) 삽입 및 조회
Elasticsearch에서 도큐먼트(document)을 삽입하는 건 MySQL에서 테이블에 레코드(record)를 삽입하는 것과 같다.
# 도큐먼트 삽입
# 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
도큐먼트 조회 시 응답값
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 2,
"relation": "eq"
},
"max_score": 1,
"hits": [
{
# _index : 인덱스명
"_index": "users",
# 데이터를 저장하면서 자동으로 생성된 '랜덤 고유 ID'
"_id": "0imoJ5YBVwYHNUofQSQc",
"_score": 1,
# _source : 저장한 데이터가 들어있는 필드
"_source": {
"name": "Alice",
"age": 28,
"is_active": true
}
},
{
"_index": "users",
"_id": "0ymoJ5YBVwYHNUofRSRX",
"_score": 1,
"_source": {
"name": "Bob",
"age": 30,
"is_active": false
}
}
]
}
}
참고) 지금으로써는 주석으로 표시한 필드의 의미만 해석할 수 있으면 된다. (파레토의 법칙)
👨🏻🏫
이번 강의에서는 인덱스를 생성하고 도큐먼트를 넣어봄으로써 데이터를 넣는 전체적인 흐름을 맛만 봤다. 다음 강의에서 도큐먼트를 조작하는 방법(CRUD)에 대해 조금 더 자세히 알아보자.