Re: [문의] Elasticsearch에 필드가 있는 데이터에 대해 Logstash 업로드 사용방법 > 질문답변

본문 바로가기
사이트 내 전체검색

질문답변

Re: [문의] Elasticsearch에 필드가 있는 데이터에 대해 Logstash 업로드 사용방법

페이지 정보

profile_image
작성자 꿈꾸는여행자
댓글 0건 조회 10,799회 작성일 21-07-29 14:08

본문

안녕하세요.


문의 하신 사항 답변 드립니다.

    CSV 형식의 데이터를 사용할 것이며 분석에 사용할 수 있는 데이터를 다루는 Kaggle.com에서 가져온 것과 동일합니다.

    여기에서 사용할 데이터 가정 의료 방문 은 Kaggle.com 사이트에서 가져옵니다.
        https://www.kaggle.com/HackandHealth/home-medical-visits-healthcare
       
    다음은 CSV 파일에 사용할 수 있는 필드입니다.

        ["Visit_Status","Time_Delay","City","City_id","Patient_Age","Zipcode","Latitude","Longitude",
        "Pathology","Visiting_Date","Id_type","Id_personal","Number_Home_Visits","Is_Patient_Minor","Geo_point"]


    다음은 logstash와 함께 사용할 conf 파일입니다.

        input {
          file {
              path => "C:/kibanaproject/home_visits.csv"
              start_position => "beginning"
              sincedb_path => "NUL"
          }
        }
        filter {
          csv {
              separator => ","
              columns =>
              ["Visit_Status","Time_Delay","City","City_id","Patient_Age",
              "Zipcode","Latitude","Longitude","Pathology","Visiting_Date",
              "Id_type","Id_personal","Number_Home_Visits","Is_Patient_Minor","Geo_point"]
          }
          date {
              match => ["Visiting_Date","dd-MM-YYYY HH:mm"]
              target => "Visiting_Date"
          }
          mutate {convert => ["Number_Home_Visits", "integer"]}
          mutate {convert => ["City_id", "integer"]}
          mutate {convert => ["Id_personal", "integer"]}
          mutate {convert => ["Id_type", "integer"]}
          mutate {convert => ["Zipcode", "integer"]}
          mutate {convert => ["Patient_Age", "integer"]}
          mutate {
              convert => { "Longitude" => "float" }
              convert => { "Latitude" => "float" }
          }
          mutate {
              rename => {
                "Longitude" => "[location][lon]"
                "Latitude" => "[location][lat]"
              }
          }
        }
        output {
          elasticsearch {
              hosts => ["localhost:9200"]
              index => "medicalvisits-%{+dd.MM.YYYY}"
          }
          stdout {codec => json_lines }
        }

    기본적으로 logstash는 Elasticsearch에 업로드되는 모든 것을 문자열로 간주합니다. CSV 파일에 날짜 필드가 있는 경우 날짜 형식을 얻으려면 다음을 수행해야 합니다.

    날짜 필드의 경우 -

        date {
          match => ["Visiting_Date","dd-MM-YYYY HH:mm"]
          target => "Visiting_Date"
        }

    지리적 위치의 경우 Elasticsearch는 다음과 같이 이해합니다.

        "location": {
          "lat":41.565505000000044,
          "lon": 2.2349995750000695
        }
       
    따라서 Elasticsearch가 필요로 하는 형식의 경도와 위도가 있는지 확인해야 합니다.
    따라서 먼저 경도와 위도를 float로 변환하고 나중에 lat 및 lon 이 있는 위치 json 객체의 일부로 사용할 수 있도록 이름을 변경해야 합니다 . 동일한 코드가 여기에 표시됩니다.

        mutate {
              convert => { "Longitude" => "float" }
              convert => { "Latitude" => "float" }
          }
        mutate {
          rename => {
              "Longitude" => "[location][lon]"
              "Latitude" => "[location][lat]"
          }
        }

    필드를 정수로 변환하려면 다음 코드를 사용하십시오.

        mutate {convert => ["Number_Home_Visits", "integer"]}
        mutate {convert => ["City_id", "integer"]}
        mutate {convert => ["Id_personal", "integer"]}
        mutate {convert => ["Id_type", "integer"]}
        mutate {convert => ["Zipcode", "integer"]}
        mutate {convert => ["Patient_Age", "integer"]}

    필드가 처리되면 다음 명령을 실행하여 Elasticsearch에 데이터를 업로드합니다.

        Logstash bin 디렉토리로 이동하여 다음 명령을 실행합니다.
       
            logstash -f logstash_homevisists.conf
        완료되면 아래와 같이 Elasticsearch의 logstash conf 파일에 언급된 인덱스가 표시되어야 합니다.


    이제 위의 업로드된 인덱스에 인덱스 패턴을 생성하고 시각화 생성에 추가로 사용할 수 있습니다.


감사합니다.

 >
 >
 > 필드를 가진 CSV 데이터 업로드 방법이 궁금합니다.
 >
 >

댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

사이트 정보

회사명 : (주)리눅스데이타시스템 / 대표 : 정정모
서울본사 : 서울특별시 강남구 봉은사로 114길 40 홍선빌딩 2층 / tel : 02-6207-1160
대전지사 : 대전광역시 유성구 노은로174 도원프라자 5층 / tel : 042-331-1161

접속자집계

오늘
46
어제
1,663
최대
3,935
전체
832,590
Copyright © www.linuxdata.org All rights reserved.