엘라스틱서치에서 원본 데이터 추출하기

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

그림1

결국 구글신께 문의. 요즘 구글신은 한국말도 잘해서 너무 좋다. 다음은 원본 추출을 위한 Logstash 설정.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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' 영역만 복사.

그림4

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

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

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

timeline을 'date-time' 형식으로 지정하는 기능이 있으면 엑셀 데이터에서 동적 그래프로 바로 변환이 가능할텐데 찾지를 못하겠다. 구글신도 안 알랴줌. 참고로 최신 X-Pack을 설치하면 엘라스틱서치에서도 관계망 그래프 기능을 이용할 수 있다고 한다. (30일 무료)


Popit은 페이스북 댓글만 사용하고 있습니다. 페이스북 로그인 후 글을 보시면 댓글이 나타납니다.