로컬에서는 잘 되는데 ☘️

[ElasticSearch] 데이터 업데이트

by youngjun._.


실습 환경

  • 💡 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"}'

학점unit5학점 더 올라갔는지 확인해보자

$ 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
  }
}

본 포스팅은 InflearnELK 스택 (ElasticSearch, Logstash, Kibana) 으로 데이터 분석 강의를 참고하여 작성되었습니다.


블로그의 정보

개발하는만두

youngjun._.

활동하기