개요
Elasticsearch과 kibana를 통해 document를 저장하고 시각화 할 수 있다. Elasticsearch에 document를 넣기 위해 여러 언어를 사용할 수 있지만 python을 사용하면 한결 간단한 코드로 작성이 가능하다.
Elasticsearch Client List는 아래와 같다.
- Java REST Client [7.3]
- Java API [7.3]
- JavaScript API [7.x]
- Ruby API [7.x]
- Go API .NET API [7.x]
- PHP API [7.0]
- Perl API
- Python API
- Community Contributed Clients
출처 > https://www.elastic.co/guide/en/elasticsearch/client/index.html
시작하기 전에
아래 예제는 python을 사용하여 elasticsearch에 document를 넣고 kibana로 index를 만들어 조회하는 코드이다.
준비물은 아래와 같다.
- Kibana 6.x 이상
- Elasticsearch 6.x 이상
- python 2.7
- Elasticsearch python module(pip install elasticsearch)
코드
elasticsearch(localhost:9200)의 'python2elasticsearch' index에 doctype 'log' 이름으로 document를 넣는 코드이다.
import time
from elasticsearch import Elasticsearch
import datetime
def utc_time(): # @timestamp timezone을 utc로 설정하여 kibana로 index 생성시 참조
return datetime.datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + 'Z'
try:
es = Elasticsearch('localhost:9200')
count = 0
while 1:
doc = {"count": count,
"@timestamp": utc_time()}
res = es.index(index='python2elasticsearch', doc_type="log", body=doc)
print(doc)
print(res)
count = count + 1
time.sleep(5)
except KeyboardInterrupt:
pass
Elasticsearch에 timefilter로 걸고 싶은 field에 날짜 시간을 넣고싶을때 반드시 utc time으로 넣어야한다!
실행방법
python main.py
결과물
Python 로그
in ~/Desktop
$ python main.py
{'count': 0, '@timestamp': '2019-08-07T03:12:06.347Z'}
{u'_type': u'log', u'_seq_no': 0, u'_shards': {u'successful': 1, u'failed': 0, u'total': 2}, u'_index': u'python2es-20190807', u'_version': 1, u'_primary_term': 1, u'result': u'created', u'_id': u'VjQPamwBme5IBDFz9c0k'}
{'count': 1, '@timestamp': '2019-08-07T03:12:11.561Z'}
{u'_type': u'log', u'_seq_no': 0, u'_shards': {u'successful': 1, u'failed': 0, u'total': 2}, u'_index': u'python2es-20190807', u'_version': 1, u'_primary_term': 1, u'result': u'created', u'_id': u'VzQQamwBme5IBDFzCc0r'}
{'count': 2, '@timestamp': '2019-08-07T03:12:16.576Z'}
{u'_type': u'log', u'_seq_no': 0, u'_shards': {u'successful': 1, u'failed': 0, u'total': 2}, u'_index': u'python2es-20190807', u'_version': 1, u'_primary_term': 1, u'result': u'created', u'_id': u'WDQQamwBme5IBDFzHM3C'}
{'count': 3, '@timestamp': '2019-08-07T03:12:21.585Z'}
Elasticsearch 데이터 조회
Kibana Index pattern 생성
Kibana 조회
정상적으로 kibana에서 데이터가 조회됨을 확인할 수 있다.
반응형
'빅데이터 > Elasticsearch' 카테고리의 다른 글
RestHighLevelClient로 구현한 idempotence 데이터 적재 (0) | 2022.11.29 |
---|---|
ElasticsearchClient 7.17.7 기준 java client example code (0) | 2022.11.28 |
엘라스틱서치에 중복 id로 값을 보내면? (0) | 2020.09.27 |
Elasticsearch, Logstash, Kibana 버젼별 하위호환표 (0) | 2020.03.26 |
엘라스틱서치에서 field 와 field.keyword 의 차이(text와 keyword) (0) | 2020.03.06 |