Re: [문의] Elasticsearch에 필드가 있는 데이터에 대해 Logstash 업로드 사용방법
페이지 정보
본문
안녕하세요.
문의 하신 사항 답변 드립니다.
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 데이터 업로드 방법이 궁금합니다.
>
>
문의 하신 사항 답변 드립니다.
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 데이터 업로드 방법이 궁금합니다.
>
>
- 이전글[문의] Elasticsearch에 필드가 있는 데이터에 대해 Logstash 업로드 사용방법 21.07.29
- 다음글Q. 최근 ssh 서버 접속자 점검 방법 21.07.29
댓글목록
등록된 댓글이 없습니다.