# ElasticSearch 데이터 입력, 조회, 삭제 실습
# 실습 환경
- 💡 Elasticsearch 7.9.0
- 💡 Windows 10
- 💡 Git Bash
시작하기 전 지난 포스팅에 정리한 표를 참고하고자 아래에 넣어두겠다.
GET
, POST
, PUT
, DELETE
를 먼저 실습해보고자 한다.
ElasticSearch | RDB |
---|---|
Index | Database |
Type | Table |
Document | Row |
Field | Column |
Mapping | Schema |
▲ 저장 구조
ElasticSearch | RDB | CRUD |
---|---|---|
GET | Select | Read |
POST | Insert | Create |
PUT | Update | Update |
DELETE | Delete | Delete |
▲ Query
# 1. (Create) Index 만들기
아래 명령어를 입력하면 index가 생성된다.
$ curl -XPUT http://localhost:9200/classes?pretty
결과
{
"acknowledged" : true,
"shards_acknowledged" : true,
"index" : "classes"
}
# 2. (Read) Index 조회하기
index가 잘 만들어졌는지 확인해보자.
$ curl -XGET http://localhost:9200/classes?pretty
결과
{
"classes" : {
"aliases" : { },
"mappings" : { },
"settings" : {
"index" : {
"creation_date" : "1597992858432",
"number_of_shards" : "1",
"number_of_replicas" : "1",
"uuid" : "vPVLv77BSICCXk9VWekU_w",
"version" : {
"created" : "7090099"
},
"provided_name" : "classes"
}
}
}
}
# 3. (Delete) Index 삭제하기
삭제해보자.
$ curl -XDELETE http://localhost:9200/classes?pretty
결과
{
"acknowledged" : true
}
잘 삭제되었는지 확인해보자.
$ curl -XGET http://localhost:9200/classes?pretty
결과
{
"error" : {
"root_cause" : [
{
"type" : "index_not_found_exception",
"reason" : "no such index [classes]",
"resource.type" : "index_or_alias",
"resource.id" : "classes",
"index_uuid" : "_na_",
"index" : "classes"
}
],
"type" : "index_not_found_exception",
"reason" : "no such index [classes]",
"resource.type" : "index_or_alias",
"resource.id" : "classes",
"index_uuid" : "_na_",
"index" : "classes"
},
"status" : 404
}
없는 index에 접근해 404 에러를 띄우는 것을 확인할 수 있다.
# 4. (Create) Document 만들기
Table의 Row와 유사한 개념으로 JSON 형식
의 문서라는 차이점이 있다.
아래 명령어를 통해 생성할 수 있다.
$ curl -XPOST http://localhost:9200/classes/class/1/ -d '{"title" : "ElasticSearch", "professor" : "Youngjun_Park"}'
Window10 환경에서 실행하여 406 Error
가 출력된다면 이 명령어를 사용하면 된다.
$ curl -XPOST http://localhost:9200/classes/class/1/?pretty \
-H 'Content-Type: application/json' \
-d '{"title" : "ElasticSearch", "professor" : "Youngjun_Park"}'
그래도 안된다면 내가 겪었던 문제와 같을 것 같으니 Error-Handling page를 참고하도록 하자!
정상적으로 생성됐다면 아래와 비슷한 출력을 볼 수 있다.
{
"_index" : "classes",
"_type" : "class",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1
}
잘 생성됐는지 확인해보자.
$ curl -XGET http://localhost:9200/classes/class/1/?pretty
결과
{
"_index" : "classes",
"_type" : "class",
"_id" : "1",
"_version" : 1,
"_seq_no" : 0,
"_primary_term" : 1,
"found" : true,
"_source" : {
"title" : "ElasticSearch",
"professor" : "Youngjun_Park"
}
}
# 5. JSON File의 데이터 삽입하기
매번 데이터를 넣을 때 마다 위와 같이 작성할 수는 없다.
아래에 보이는 JSON
파일 데이터를 Insert해보자.
{
"title" : "Algorithm",
"Professor" : "Youngjun Park",
"major" : "Computer Science",
"semester" : ["spring", "fall"],
"student_count" : 100,
"unit" : 3,
"rating" : 5
}
@'file명'
을 포함한 다음 명령어를 통해 JSON 데이터를 삽일할 수 있다.
curl -XPUT -H 'Content-Type: application/json' http://localhost:9200/classes/class/1/?pretty -d @oneclass.json
결과
{
"_index" : "classes",
"_type" : "class",
"_id" : "1",
"_version" : 2,
"result" : "updated",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 1,
"_primary_term" : 1
}
데이터가 잘 들어갔는지 확인해보자.
curl -GET http://localhost:9200/classes/class/1/?pretty
결과
{
"_index" : "classes",
"_type" : "class",
"_id" : "1",
"_version" : 2,
"_seq_no" : 1,
"_primary_term" : 1,
"found" : true,
"_source" : {
"title" : "Algorithm",
"Professor" : "Youngjun Park",
"major" : "Computer Science",
"semester" : [
"spring",
"fall"
],
"student_count" : 100,
"unit" : 3,
"rating" : 5
}
}
본 포스팅은
Inflearn
의 ELK 스택 (ElasticSearch, Logstash, Kibana) 으로 데이터 분석 (opens new window) 강의를 참고하여 작성되었습니다.