2017년 9월 19일 화요일

Elasticsearch에서 원본 데이터 추출하기

엘라스틱서치에서 원본 데이터를 추출해보자. 그런데 원본 추출 관련 메뉴가 안 보인다(..) 엘라스틱서치는 집계된 데이터의 추출만을 지원하는 듯.


결국 구글신께 문의. 요즘 구글신은 한국말도 잘해서 좋다. 다음은 원본 추출을 위한 Logstash 설정.
input {
 elasticsearch {
  hosts => "localhost:9200"
  index => "logstash-weblog"
  query => '{
   "query": {
    "bool": {
     "must": [
      {
       "query_string": {
        "query": "*",
        "analyze_wildcard": true
       }
      },
      {
       "range": {
        "@timestamp": {
         "gte": 1294758000000,
         "lte": 1294844399000,
         "format": "epoch_millis"
        }
       }
      }
     ],
     "must_not": []
    }
   }
  }'
 }
}

output {
 file {
  codec => line { format => "%{ext}, %{status}, %{timestamp}" }
  path => "d:/ex.csv"
 }
}

데이터 추출 쿼리문은 'Discover' 메뉴의 Request 소스에서 'query' 영역만 복사.


다음은 추출된 원본 데이터.


해당 데이터를 추출한 이유는 파일 확장자와 응답코드 관계망의 시간대별 변화를 Gephi로 그려보기 위해서인데, 결과는 다음과 같다.


시간 단위 변화를 표시하기 위해 원본을 24개의 csv 파일로 나누고, Gephi에서 다시 24개의 gexf 파일로 저장한 후, 다시 하나로 합치는 과정을 거쳤다. 한마디로 노가다 of 노가다.

timeline을 'date-time' 형식으로 지정하는 기능이 있으면 엑셀 데이터에서 동적 그래프로 바로 변환이 가능할텐데 찾지를 못하겠다. 구글신도 안 알랴줌. 

참고로 최신 X-Pack을 설치하면 엘라스틱서치에서도 관계망 그래프 기능을 30일 간 무료로 이용할 수 있다고 한다. 사용해보신 분 후기 좀(..)

관련 글

댓글 없음:

댓글 쓰기

크리에이티브 커먼즈 라이선스