[엘라스틱서치] 데이터 입력과 Index, Type, Document

    데이터입력

    키바나(Kibana)의 콘솔을 활용하면 엘라스틱서치(Elasticsearch)에 매우 쉽게 데이터를 넣어볼 수 있다. 

     

    키바나 Console창에서 입력 준비

    키바나(Kibana) Console 창에서 PUT Http 메소드를 사용하여 엘라스틱서치에 매우 쉽게 데이터를 넣어볼 수 있다. Kibana 콘솔창에 JSON 구조의 파라미터를 입력한 후, ▷ 버튼을 클릭하여 데이터를 입력한다.

    PUT /<index>/<type>/<id>
    PUT /article/_doc/1
    {
      "article_no":"20200526000243",
      "title":"코오롱플라스틱, 긴축경영…코로나19 경영난 전방위 확산 우려",
      "description":"바스프 합작 신공장 고정비 과다 지출 PBT·POM 등 국내외 판매 둔화 가속 임원연봉 삭감…경영 정상화 안간힘 항공·정유 이어 소재산업 어려움 확산",
      "author":"",
      "regdate":"20200526"
    }

     

    이와같이 article이라는 index에 데이터가 입력된 것을 볼 수 있다. 정상적으로 저장이 되었는지 확인하기 위해 해당 인덱스를 호출해보도록 한다.

    http://localhost:9200/article/_search

    article이라는 index값으로 데이터를 검색해보니 다음과 같이 정상적으로 데이터가 들어간 것을 확인할 수 있다. 그럼 이제는 Elasticsearch에서 index, type 등과 같은 값들의 정의를 이해해야 할 것이다.

     

    https://medium.com/@hansrajchoudhary_88463/elasticsearch-things-you-should-know-about-es-to-be-useful-fbc537a04086

     

    RDBMS Elasticsearch
    Database Index
    Table Type
    Row Document

     

    Index

    RDBMS의 Database와 동일한 개념이다. 우리가 RDBMS로 프로젝트를 할 때 제일 먼저 하는 것이 Database를 생성하며 Database에 수많은 테이블을 만들어낸다. 그러나 엘라스틱서치로 프로젝트를 할 때는 이와 같은 Database 개념으로 프로젝트를 수행하면 힘들 수 있다. 보통 Index에 데이터를 넣을 때는 유사한 타입의 데이터를 넣게 된다.

     

     

    그러나 이와 같은 개념은 6.0이하의 버전에서이고, 7.0부터는 Index당 Type이 하나만 제공이 되어서 사실상 Index = Type과 동일하다라고 인식하면 될 것같다.

    Prior to Elasticsearch 6.0 one index could contain multiple types. This has been changed since 6.0 to allow only one type within an index. If you have an existing index with multiple types created prior to 6.0 and you are upgrading to Elasticsearch 6.0, you can still use your old index. You cannot create a new index with more than one type in Elasticsearch 6.0 and above. 
    - Learning Elastic Stack 7.0 - 

     

    Document

    Document는 RDBMS에서 row에 대응하는 개념이다. 기사를 저장하는 테이블이 있다면 기사 하나하나를 Row 형태로 테이블에 넣게 된다. Document는 Row의 개념과 동일하지만 좀 더 객체적인 느낌이 강하다. 즉 Row는 구조가 정해진 데이터의 모습이라 한다면 Document는 자유로운 문서와 같기 때문에 그 어떤 문서라도 데이터를 자유롭게 넣을 수 있다.

     

    기본적으로 엘라스틱서치의 도큐먼트는 Key-Value로 이루어지며 Key는 RDBMS의 컬럼명(column name)과 같고, Value는 RDBMS의 컬럼값(column value)과 같다.

     

    위 PUT 예제를 보면, 마지막에 아이디값을 입력하게 되는데 해당 값은 Primary Key라고 인식을 하면 된다. 이 값은 별도로 입력하지 않으면 자동적으로 값이 generated되어 들어간다.

     

    위와 같이 POST로 입력하여 ID값을 입력하지 않고 넣게 되면, _id가 자동적으로 generated 되는 것을 확인할 수 있다.

     

    댓글

    Designed by JB FACTORY