# ElasticSearch 데이터 업데이트 실습
# 실습 환경
- 💡 Elasticsearch 7.9.0
- 💡 Windows 10
- 💡 Git Bash
# 1. (Create) Document 생성하기
업데이트 하려면 Document가 먼저 생성되어 있어야한다.
생성하는 명령어는 다음과 같다.
$ curl -XPOST http://localhost:9200/classes/class/1/?pretty -H 'Content-Type: application/json' -d '{"title" : "Algorithm", "professor" : "yj_park"}'
확인하기
$ curl -XGET http://localhost:9200/classes/class/1/?pretty
결과
{
"_index" : "classes",
"_type" : "class",
"_id" : "1",
"_version" : 3,
"_seq_no" : 2,
"_primary_term" : 1,
"found" : true,
"_source" : {
"title" : "Algorithm",
"professor" : "yj_park"
}
}
# 2. (Update) Document에 Field 추가하기
과목은 Algorithm
이고 교수는 yj_park
인데
몇 학점짜리 강의인지 Field
를 추가하고 싶다.
_update
가 포함된 다음 명령어를 사용하면 된다.
$ curl -XPOST http://localhost:9200/classes/class/1/_update?pretty -H 'Content-Type: application/json' -d '{"doc" : {"unit" : 1}}'
결과
{
"_index" : "classes",
"_type" : "class",
"_id" : "1",
"_version" : 4,
"result" : "updated",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 3,
"_primary_term" : 1
}
확인해보기 위해 GET REST API를 작성해보자.
curl -XGET http://localhost:9200/classes/class/1/?pretty
결과
{
"_index" : "classes",
"_type" : "class",
"_id" : "1",
"_version" : 4,
"_seq_no" : 3,
"_primary_term" : 1,
"found" : true,
"_source" : {
"title" : "Algorithm",
"professor" : "yj_park",
"unit" : 1
}
}
# 3. (Update) 기존 Field 값 변경하기
학점 Field인 unit
을 1학점에서 2학점으로 변경해보자.
새로운 field를 추가할 때와 같은 명령어를 입력하고 unit의 변경할 값만 넣어주면 된다.
$ curl -XPOST http://localhost:9200/classes/class/1/_update?pretty -H 'Content-Type: application/json' -d '{"doc" : {"unit" : 2}}'
변경됐는지 확인해보자.
$ curl -XGET http://localhost:9200/classes/class/1/?pretty
결과
{
"_index" : "classes",
"_type" : "class",
"_id" : "1",
"_version" : 5,
"_seq_no" : 4,
"_primary_term" : 1,
"found" : true,
"_source" : {
"title" : "Algorithm",
"professor" : "yj_park",
"unit" : 2
}
}
# 4. (Update) Script를 활용한 Field 값 변경하기
실제 코딩할 때 유용하게 쓰려면 Script
를 활용하면 좋다.
$ curl -XPOST http://localhost:9200/classes/class/1/_update?pretty -H 'Content-Type: application/json' -d '{"script" : "ctx._source.unit += 5"}'
학점unit
이 5학점
더 올라갔는지 확인해보자
$ curl -XGET http://localhost:9200/classes/class/1/?pretty
결과
{
"_index" : "classes",
"_type" : "class",
"_id" : "1",
"_version" : 6,
"_seq_no" : 5,
"_primary_term" : 1,
"found" : true,
"_source" : {
"title" : "Algorithm",
"professor" : "yj_park",
"unit" : 7
}
}
본 포스팅은
Inflearn
의 ELK 스택 (ElasticSearch, Logstash, Kibana) 으로 데이터 분석 (opens new window) 강의를 참고하여 작성되었습니다.