DB

[Logstash] Elasticsearch 데이터 추출 및 저장

창수씨 2018. 10. 26. 00:32
반응형

Elasticsearch를 사용하면서 은근히 짜증나는 것 중 하나가 어떻게 데이터를 넣기는 넣었는데 어떻게 빼야하는지 난감할때가 있다. 보통 데이터를 넣고 뺄 때 Java의 Jest 라이브러리를 사용하거나 Logstash를 사용하는 데 Logstash를 사용하는 편이 편해서 템플릿을 만들어 사용한다.


Logstash Conf 파일

input { elasticsearch { hosts => "ES주소" index => "인덱스명" query => '쿼리' } } filter { } output { # stdout { #로그로 확인 하고 싶을 때 주석을 해제한다. # codec => rubydebug # } file { path => "파일로 쓸 절대 경로" # 절대경로 } }

이런 템플릿을 사용하는데 ruby filter를 추가하면 변수 경로를 추가할수 있다.
이런식으로 뽑아낸 데이터는 Json 형태의 데이터로 파일로 저장되는데 다시 넣기 위해서는
이런 형식의 Logstash Conf 파일을 사용한다.

File -> ES Logstash Conf

input { file { path => ["Logstash로 저장한 Json 형태의 파일"] start_position => "beginning" } } filter { json { source => "message" } mutate { remove_field => ["@version", "@timestamp", "message", "host"] #Logstash에서 쓰잘데기 없이 그냥 넣어주는 데이터라서 그냥 빼버림 } } output { # stdout { # codec => rubydebug { metadata => true} # } elasticsearch { hosts => "ES 주소" index => "저장할 인덱스 명" # document_type => "지정된 타입이 있을 경우" #주석 처리시 type -> doc } }



반응형