# 과제 개요

1. 전국 cctv 표준 데이터를 utf-8로 인코딩 변경(한글 포함하면 데이터깨지는 경우 존재)

2. 인덱스 세팅 및 매핑(인덱스명: index_cctv)

3. logstash로 데이터 적재

4. reindex로 location 폴더 생성


# 해결

1-1. 위도 경도 필드명을 lat lon으로 변경

1-2. 메모장으로 열어서 다른이름으로 저장 후, 모든 파일 선택 후, 인코딩 UTF-8로 지정

2. index put 명령어 실행


PUT index___cctv

{

  "mappings": {

    "properties": {

      "관리기관명":{

        "type": "text",

        "fields": {

          "keyword":{

            "type":"keyword"

          }

        }

      },

      "소재지도로명주소":{

        "type": "text",

        "fields": {

          "keyword":{

            "type":"keyword"

          }

        }

      },

      "소재지지번주소":{

        "type": "text",

        "fields": {

          "keyword":{

            "type":"keyword"

          }

        }

      },

      "설치목적구분":{

        "type": "keyword"

      },

      "카메라대수":{

        "type": "long"

      },

      "카메라화소수":{

        "type": "long"

      },

      "촬영방면정보":{

        "type": "keyword"

      },

      "보관일수":{

        "type": "long"

      },

      "설치년월":{

        "type": "date",

        "format": "iso8601||dd-MMM"

      },

      "관리기관전화번호":{

        "type": "keyword"

      },

      "lat":{

        "type": "double"

      },

      "lon":{

        "type": "double"

      },

      "데이터기준일자":{

        "type": "date",

        "format": "iso8601||yyyy/MM/dd"

      },

      "제공기관코드":{

        "type": "long"

      },

      "제공기관명":{

        "type": "text"

      }

    }

  }

}


3. logstash CONFIG파일 작성 후, 명령어로 업로드

input {

file{

path => ["C:\sample\전국CCTV표준데이터__utf8.csv"]

start_position => "beginning"

sincedb_path => "NUL"

}

}


filter {

csv{

separator=>","

columns=>["관리기관명","소재지도로명주소","소재지지번주소","설치목적구분","카메라대수","카메라화소수","촬영방면정보","보관일수","설치년월","관리기관전화번호","lat","lon","데이터기준일자","제공기관코드","제공기관명"]

skip_header=>true

}

mutate{

remove_field=>["message","path","host","@version"]

}

}


output{

stdout{

 codec=>rubydebug

}

elasticsearch{

hosts=>["http://localhost:9200"]

index=>"index__cctv"

}

}


logstash/bin 경로 상에서 'logstash -f uploadcctv.conf' 입력


4-1. geo_point type의 location 속성 생성

...

,

      "location":{

        "type": "geo_point"

      }

4-2. reindex 방식으로 geo_point 속성을 가진 데이터 생성하기

# ?slices 를 붙여주면, 30개의 병렬처리(reindex 무거운 작업시 사용)

POST _reindex?slices=30

{

  "source": {

    "index": "index___cctv"

  },

  "dest": {

    "index": "index_cctv2"

  },

  "script": {

    "source": "ctx._source.location=['lat':ctx._source.lat,'lon':ctx._source.lon]"

  }

}


3, 4 대체 방법(100mb 이하인 파일일 경우)

- kibana 좌측 메뉴 Machine Learning 선택 후, csv 업로드 후, import

- Advanced 탭 선택 후, index명, index 자동 생성된 문법 확인 후, 확인하면 자동으로 import 됨

- lat, lon속성 있을 경우 자동으로 combine하여 location 속성까지 생성해줌


'Development Stack > ELK' 카테고리의 다른 글

[ELK] 과제로 정리하기 - 시각화  (0) 2020.12.08
[ELK] 과제로 정리하기 - 검색 기능  (0) 2020.12.08
[ELK] 데이터 시각화  (0) 2020.12.01
[ELK] ElasticSearch 검색  (0) 2020.12.01
[ELK] 개요  (0) 2020.12.01
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기