elasticsearch(6.3.0)+kibana(6.3.0)를 windows 환경에서 실행
9696 단어 Python3Elasticsearch키바나
소개 나도 세상의 이케하고 있는 엔지니어처럼 빅데이터를 가시화해 도야 얼굴하고 싶다!
… 그래서 친구로부터 가르쳐 주신 elasticsearch와 kibana를
헵포코 엔지니어가 로컬 환경에서 작동 할 때까지의 메모 환경 Windows 10 Home 1803
elasticsearch 6.3.0
kibana 6.3.0
curl 7.61.0 이번 테스트에 사용할 데이터
각 가정이나 공장 등의 전력 소비량을 모은 데이터 세트 htps : // 아 r ゔ ぇ. 이 cs. 우시. 에즈 / ML / 어리석은 ts / e ct 리시 ty ぉ 아 ぢ 아 g ms20112014
특징
데이터 취득 기간: [2011/1/1, 2015/1/1]
측정결측값은 존재하지 않음
기간 중에 이용 개시·종료가 있는 경우, 측정값은 0으로 표시된다데이터 형식
CSV 형식
열 구분 기호: semicolon (;)
소수점 구분 기호: colon (,) (포르투갈에서는 이것이 표준 인 것 같습니다)
첫 번째 열: 데이터 획득 시간(15분 간격)
두 번째 열에서: 전력 소비(kW)설치
자바
windows 환경이므로 zip을 선택
elasticsearch는 Java로 만들어져 JRE 설치
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM(build 25.171-b11, mixed mode)
설정하지 않으면 JAVA_HOME을 환경 변수로 설정
C:\Program Files\Java\jre1.8.0_171(설치한 위치 지정) elasticsearch와 kibana
elasticsearch
windows 링크를 클릭하여 zip 다운로드
kibana
시작
htps //w w. 에 s c. 코 / 도 w 응 아 ds / 에 s s
이번 테스트에 사용할 데이터
각 가정이나 공장 등의 전력 소비량을 모은 데이터 세트 htps : // 아 r ゔ ぇ. 이 cs. 우시. 에즈 / ML / 어리석은 ts / e ct 리시 ty ぉ 아 ぢ 아 g ms20112014
특징
데이터 취득 기간: [2011/1/1, 2015/1/1]
측정결측값은 존재하지 않음
기간 중에 이용 개시·종료가 있는 경우, 측정값은 0으로 표시된다데이터 형식
CSV 형식
열 구분 기호: semicolon (;)
소수점 구분 기호: colon (,) (포르투갈에서는 이것이 표준 인 것 같습니다)
첫 번째 열: 데이터 획득 시간(15분 간격)
두 번째 열에서: 전력 소비(kW)설치
자바
windows 환경이므로 zip을 선택
elasticsearch는 Java로 만들어져 JRE 설치
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM(build 25.171-b11, mixed mode)
설정하지 않으면 JAVA_HOME을 환경 변수로 설정
C:\Program Files\Java\jre1.8.0_171(설치한 위치 지정) elasticsearch와 kibana
elasticsearch
windows 링크를 클릭하여 zip 다운로드
kibana
시작
htps //w w. 에 s c. 코 / 도 w 응 아 ds / 에 s s
자바
windows 환경이므로 zip을 선택
elasticsearch는 Java로 만들어져 JRE 설치 java version "1.8.0_171" Java(TM) SE Runtime Environment (build 1.8.0_171-b11) Java HotSpot(TM) 64-Bit Server VM(build 25.171-b11, mixed mode) 설정하지 않으면 JAVA_HOME을 환경 변수로 설정 C:\Program Files\Java\jre1.8.0_171(설치한 위치 지정) elasticsearch와 kibana
elasticsearchwindows 링크를 클릭하여 zip 다운로드
kibana
시작
htps //w w. 에 s c. 코 / 도 w 응 아 ds / 에 s s위의 URL에 액세스하여 버전 정보가 포함 된 JSON이 출력되면 OK
htps //w w. 에 s c. 코 / Down A ds / Kibana
위의 URL에 액세스하여 화면이 표시되면 OK
elasticsearch는 다음 배치 파일을 시작합니다. elasticsearch-6.3.0\bin\elasticsearch.bat kibana는 다음 배치 파일을 시작합니다. kibana-6.3.0-windows\bin\kibana 이번에는 다음과 같은 배치 파일을 작성하여 하나로 정리합니다. start elasticsearch-6.3.0\bin\elasticsearch start kibana-6.3.0-windows\bin\kibana
실행 중인지 확인
curl elasticsearch
http://localhost:9200/ http://localhost:5601/
이번은 벌써 들어가 있던 것을 사용(샀던지의 Windows기인데 왜?)
curl 7.55.1 (Windows) libcurl/7.55.1 WinSSL
Release-Date: [unreleased]
Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL 데이터 삽입
데이터 시각화 색인 생성
우선은 index를 작성(MySQL로 말하는 곳의 데이타베이스)
?pretty를 붙이면 개행이있는 json이 돌아옵니다.
curl -XPUT "localhost:9200/electric_power?pretty"
색인이 만들어졌는지 확인
curl -XGET "localhost:9200/_cat/indices?v" 방문하면 kibana 홈 화면이 표시됩니다.
왼쪽 메뉴에서 visualize
메뉴를 클릭하십시오.
index pattern에 electric_power
를 입력하고 Next Step
버튼을 누르면
뭔가 그래프를 할 수 있어야합니다.
…라고 생각했지만 뭔가 잘 가지 않는다. (예쁘다)
json 만들기
elasticsearch의 BulkAPI로 로드하려면 다음과 같이 데이터를 2행 1조의 json으로 변환합니다.
ID를 지정하지 않으면 적절한 고유 ID가 부여됩니다.
{ "index" : { "_index" : "(삽입하고 싶은 index)", "_type" : "(삽입하고 싶은 type)", "_id" : "(유일한 id)" } }
{(실제 데이터 json)}
이번에는 파이썬을 사용하여 json으로 변환
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import csv
import json
PATH = './dataset.txt'
JSON_BASE_NAME = './dataset'
def main():
with open(PATH, mode='r', encoding='utf-8', newline='') as f:
dialect = csv.Sniffer().sniff(f.readline(), delimiters=';')
f.seek(0)
reader = csv.reader(f, dialect)
header = reader.__next__()
header[0] = "datetime"
file_num = 0
writer = open(JSON_BASE_NAME + '_' + str(file_num) + '.json', mode='w', encoding='utf-8')
line_num = 0
for line in reader:
line_num = line_num + 1
writer.writelines(json.dumps({'index': {'_index': 'electric_power', '_type': 'portugal'}}))
writer.writelines('\n')
line_dict = make_line_dict(header, line)
writer.writelines(json.dumps(line_dict))
writer.writelines('\n')
# 큰 파일이므로 파일 분할
if line_num >= 1000:
line_num = 0
file_num=file_num+1
writer.close()
writer = open(JSON_BASE_NAME + '_' + str(file_num) + '.json', mode='w', encoding='utf-8')
writer.writelines('\n')
writer.close()
def make_line_dict(header, line):
line = list(map(lambda l: l.replace(',', '.'), line))
line[1:] = list(map(lambda val: float(val), line[1:]))
line_dict = dict(zip(header, line))
return line_dict
if __name__ == '__main__':
main() elasticsearch에 투입
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os
# ファイルの個数
FILE_NUM = 141
def main():
for i in range(FILE_NUM):
cmd = 'curl --noproxy localhost -H "Content-Type: application/json" ' \
'-XPUT localhost:9200/_bulk --data-binary @dataset_' + str(i) + '.json'
print(cmd)
os.system(cmd)
if __name__ == '__main__':
main()
아무래도, 디폴트라고 시각 필드가 text로서 취급되고 있는 것이 원인과 같이
매핑 확인 변환한 json을 BulkAPI로 투입. (데이터가 너무 커서
덧붙여서 Elasticsearch6 계에서 Content-Type 헤더가 필수인 것 같습니다.
나는 여기에서 빠졌습니다. (반길레)
~약 ~
"datetime" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
}
~약 ~
이하에 액세스하면 넣은 데이터를 확인할 수 있다. http://localhost:9200/electric_power/_search?pretty
매핑 변경
데이터가 elasticsearch에 포함되었으므로 표시 할 수 있어야합니다. http://localhost:5601/
방문하면 kibana 홈 화면이 표시됩니다.
왼쪽 메뉴에서 Discover
메뉴를 클릭하십시오.index pattern
에 electric_power
Time Filter field name
에 datetime
를 선택하고 Next Step
버튼을 클릭
다시 Discover
메뉴를 클릭하면…
했다~~~~
결국 elasticsearch는 아무것도하지 않고 필드 유형을 정의하는 것 같습니다.
다음 URL에 액세스하여 기본 유형을 확인하십시오. http://localhost:9200/electric_power/_mapping?pretty 시간으로 취급하고 싶기 때문에, 자동 생성된 매핑의 datetime의 정의를 이하와 같이 수정
{
"mappings" : {
"portugal" : {
"properties" : {
"MT_001" : {
"type" : "float"
},
"MT_002" : {
"type" : "float"
},
~약 ~
"datetime" : {
"type" : "date",
"format" : "YYYY-MM-dd HH:mm:ss"
}
}
}
}
}
다음 명령으로 정의한 매핑 등록
curl -XDELETE "localhost:9200/*"
curl -H "Content-Type: application/json" -XPUT localhost:9200/electric_power --data-binary @mapping.json 다시 액세스하여 의도한 정의가 되었는지 확인 http://localhost:9200/electric_power/_mapping?pretty
다시 데이터를 elasticsearch에 입력 http://localhost:5601/
Reference
이 문제에 관하여(elasticsearch(6.3.0)+kibana(6.3.0)를 windows 환경에서 실행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/meow_tk_meow/items/1eccc3c17c61c53be29b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
왼쪽 메뉴에서
visualize
메뉴를 클릭하십시오.index pattern에
electric_power
를 입력하고 Next Step
버튼을 누르면뭔가 그래프를 할 수 있어야합니다.
…라고 생각했지만 뭔가 잘 가지 않는다. (예쁘다)
json 만들기
elasticsearch의 BulkAPI로 로드하려면 다음과 같이 데이터를 2행 1조의 json으로 변환합니다. ID를 지정하지 않으면 적절한 고유 ID가 부여됩니다. { "index" : { "_index" : "(삽입하고 싶은 index)", "_type" : "(삽입하고 싶은 type)", "_id" : "(유일한 id)" } } {(실제 데이터 json)} 이번에는 파이썬을 사용하여 json으로 변환 #!/usr/bin/env python3 # -*- coding: utf-8 -*- import csv import json PATH = './dataset.txt' JSON_BASE_NAME = './dataset' def main(): with open(PATH, mode='r', encoding='utf-8', newline='') as f: dialect = csv.Sniffer().sniff(f.readline(), delimiters=';') f.seek(0) reader = csv.reader(f, dialect) header = reader.__next__() header[0] = "datetime" file_num = 0 writer = open(JSON_BASE_NAME + '_' + str(file_num) + '.json', mode='w', encoding='utf-8') line_num = 0 for line in reader: line_num = line_num + 1 writer.writelines(json.dumps({'index': {'_index': 'electric_power', '_type': 'portugal'}})) writer.writelines('\n') line_dict = make_line_dict(header, line) writer.writelines(json.dumps(line_dict)) writer.writelines('\n') # 큰 파일이므로 파일 분할 if line_num >= 1000: line_num = 0 file_num=file_num+1 writer.close() writer = open(JSON_BASE_NAME + '_' + str(file_num) + '.json', mode='w', encoding='utf-8') writer.writelines('\n') writer.close() def make_line_dict(header, line): line = list(map(lambda l: l.replace(',', '.'), line)) line[1:] = list(map(lambda val: float(val), line[1:])) line_dict = dict(zip(header, line)) return line_dict if __name__ == '__main__': main() elasticsearch에 투입#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os
# ファイルの個数
FILE_NUM = 141
def main():
for i in range(FILE_NUM):
cmd = 'curl --noproxy localhost -H "Content-Type: application/json" ' \
'-XPUT localhost:9200/_bulk --data-binary @dataset_' + str(i) + '.json'
print(cmd)
os.system(cmd)
if __name__ == '__main__':
main()
아무래도, 디폴트라고 시각 필드가 text로서 취급되고 있는 것이 원인과 같이
매핑 확인 변환한 json을 BulkAPI로 투입. (데이터가 너무 커서 덧붙여서 Elasticsearch6 계에서 Content-Type 헤더가 필수인 것 같습니다. 나는 여기에서 빠졌습니다. (반길레) ~약 ~ "datetime" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } } ~약 ~
이하에 액세스하면 넣은 데이터를 확인할 수 있다. http://localhost:9200/electric_power/_search?pretty매핑 변경
데이터가 elasticsearch에 포함되었으므로 표시 할 수 있어야합니다. http://localhost:5601/ 방문하면 kibana 홈 화면이 표시됩니다.왼쪽 메뉴에서
Discover
메뉴를 클릭하십시오.index pattern
에 electric_power
Time Filter field name
에 datetime
를 선택하고 Next Step
버튼을 클릭다시
Discover
메뉴를 클릭하면…했다~~~~
결국 elasticsearch는 아무것도하지 않고 필드 유형을 정의하는 것 같습니다.
다음 URL에 액세스하여 기본 유형을 확인하십시오. http://localhost:9200/electric_power/_mapping?pretty 시간으로 취급하고 싶기 때문에, 자동 생성된 매핑의 datetime의 정의를 이하와 같이 수정
{
"mappings" : {
"portugal" : {
"properties" : {
"MT_001" : {
"type" : "float"
},
"MT_002" : {
"type" : "float"
},
~약 ~
"datetime" : {
"type" : "date",
"format" : "YYYY-MM-dd HH:mm:ss"
}
}
}
}
}
다음 명령으로 정의한 매핑 등록
curl -XDELETE "localhost:9200/*"
curl -H "Content-Type: application/json" -XPUT localhost:9200/electric_power --data-binary @mapping.json 다시 액세스하여 의도한 정의가 되었는지 확인 http://localhost:9200/electric_power/_mapping?pretty
다시 데이터를 elasticsearch에 입력 http://localhost:5601/
Reference
이 문제에 관하여(elasticsearch(6.3.0)+kibana(6.3.0)를 windows 환경에서 실행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/meow_tk_meow/items/1eccc3c17c61c53be29b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
http://localhost:9200/electric_power/_mapping?pretty
다시 데이터를 elasticsearch에 입력 http://localhost:5601/
Reference
이 문제에 관하여(elasticsearch(6.3.0)+kibana(6.3.0)를 windows 환경에서 실행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/meow_tk_meow/items/1eccc3c17c61c53be29b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(elasticsearch(6.3.0)+kibana(6.3.0)를 windows 환경에서 실행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/meow_tk_meow/items/1eccc3c17c61c53be29b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)