[엘라스틱서치] 데이터를 입력하는 PUT과 POST 비교

    엘라스틱서치에서는 데이터를 핸들링하는 CRUD 명령어를 강력하고 깔끔한 Rest API형태로 제공하여 쉽게 데이터를 검색, 저장, 갱신, 삭제 등의 작업을 할 수 있다.

     

    그 중 처음에는 뭘 써야 될지 헷갈릴 수 있는 Put과 Post의 대한 차이를 설명해보고자 한다. 이전 포스팅에서는 데이터를 저장하는 방식으로 Put만 설명하였는데 마찬가지로 데이터를 저장하는 Post 명령어를 사용한 후 어떤 상황에서 써야 하는지 이해해보자

     

    PUT으로 저장하기

    데이터를 매우 쉽게 넣을 수 있는 Put 명령은 다음과 같은 구조를 가진다

    PUT /<index>/<type>/<id>

     

    put 예제

    PUT /article/_doc/2
    {
      "article_no":"20200707085400",
      "title":"삼성전자 2분기 영업이익 8조1천억원…'어닝서프라이즈'",
      "description":"삼성전자[005930]가 올해 2분기 신종 코로나바이러스 감염증(코로나19) 사태에도 불구하고 시장의 전망치를 훌쩍 뛰어 넘는 호실적을 기록했다.코로나 셧다운 여파로 전체 매출은 작년보다 감소했지만 언택트(비대면) 수요 증가에 따른 반도체 실적 호조에 힘입어 시장 예측을 뛰어넘는 수준의 영업이익을 내는 '어닝서프라이즈'를 기록했다.",
      "author":"연합뉴스",
      "regdate":"20200707"
    }

    Put 실행예제

    이미 Put은 잘 알고 있을거라 생각하고, 이제 Post로 데이터를 입력하는 방법으로 넘어가보도록 한다

     

    POST로 저장하기

    POST는 다양한 옵션을 가졌으며, 아래와 같은 구조로 글을 쓸 경우 Put보다 더 쉬운 명령어로 글을 생성할 수 있게 된다.

    POST /<index>/<type>

    위와 같이 PUT과 달리 id를 별도로 입력하지 않는다.

     

     

    POST 예제

    POST /article/_doc
    {
      "article_no":"20200708144900",
      "title":"美빌보드 블랙핑크 전 세계를 사로잡은 가장 큰 걸그룹",
      "description":"7일(현지시간) 미국 빌보드가 발표한 최신 차트에 따르면 블랙핑크의 'How You Like That'은 메인 싱글 차트인 핫100에 33위로 첫 진입했다. K팝 걸그룹 단일곡 역대 최고 순위로 보드는 장문의 기사를 통해 블랙핑크의 성공 요인 등을 다양하게 짚었다.",
      "author":"일간스포츠",
      "regdate":"20200708"
    }

    POST 실행 예제

    별도의 아이디를 입력하지 않고, 저장하는 POST는 아이디를 난수값들로 만들어서 저장을 한다.

     

    POST 실행결과

    {
      "_index" : "article",
      "_type" : "_doc",
      "_id" : "I25LL3MBeNh6shGNzoPU",
      "_version" : 1,
      "result" : "created",
      "_shards" : {
        "total" : 2,
        "successful" : 1,
        "failed" : 0
      },
      "_seq_no" : 2,
      "_primary_term" : 1
    }
    

     위 실행결과를 보다시피, 우측에 _id로 난수값인 "I25LL3MBeNh6shGNzoPU"로 저장되어 있다. 

     

    즉 PUT과 POST의 명령어를 보면 알겠지만, PUT으로 저장을 할 때는 아이디를 내가 관리할 수 있어야 하며, POST로 저장을 할 때는 아이디 관리를 맡기는 것이 된다. 

     

     

    댓글

    Designed by JB FACTORY