티스토리 뷰

ElasticSearch

elasticsearch mapping 변경

장송송 2018. 4. 13. 10:10

Elasticsearch mapping 변경하기


0. 변경

- elasticsearch의 mapping은  새로 추가하는 경우는 가능하지만 이미 사용하는걸 바꾸기는 어렵다!

- 어플리케이션단 중단없이 이용을 위해 _aliases 로 변경예정


1) 단순 mapping 변경.. 항목추가정도

PUT bizrpt_report_v4/_mapping/doc

{

        "properties": {

          "rpt_time": {

            "type": "text",

            "fielddata": true,

            "fields": {

              "keyword": {

                "type": "keyword",

                "ignore_above": 256

              }

            }

          }

        }



2) 변경이 클때

1. 변경전 상황

     - elasticsearch 6.1 버전 이용중!

- aliase INDEX : bizrpt_report,   실제 INDEX : bizrpt_report_v4

- 어플리케이션단은 bizrpt_report를 index로 이용하여 조회 하지만 실제는 bizrpt_report_v4임.


bizrpt_report_v5를 새로만들어 매핑변경 예정.



2. 기존 매핑 가져오기

GET bizrpt_report_v4/_mapping


       RESULT => 

{

    "bizrpt_report_v4":{   //bizrpt_report_v4는 INDEX 이름

         "mapping":{

                "doc":{  // doc은 타입 이름

                       "properties" : { .... }

                }

          }

    }

}


2. 위에 RESULT를 변경하여 새로운 매핑정보로 인덱스를 등록

PUT bizrpt_report_v5 

파라미터 => {

         "mapping":{

                "doc":{  // doc은 타입 이름

                       "properties" : { 새로운 매핑정보 }

                }

          }

}


3. 데이터 넣어주기

- 현재 bizrpt_report_v4 Index에 90만개 데이터가 있었는데 이용에 불편없이 복사됐으며 걸린시간은 5분 미만.

POST _reindex

파라미터 => {

  "size": 1000000, //갯수

  "source": { //기존

    "index": "bizrpt_report_v4",

  },

  "dest": {  //새로만든곳

    "index": "bizrpt_report_v5"

  }

}


4. alias 변경하기

POST /_aliases

{

    "actions": [

        { "remove": {

            "alias": "bizrpt_report",

            "index": "bizrpt_report_v4"

        }},

        { "add": {

            "alias": "bizrpt_report",

            "index": "bizrpt_report_v5"

        }}

    ]

}


5. 확인하기






댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함