2016-08-02 5 views
0

Logstash는 필드가 my_id 인 CSV 파일로 읽으며 숫자로 구성된 8 자리 문자열입니다.Logstash - 문자열의 문자를 2 개의 필드로 나눕니다.

출력 파일에 my_id 대신 2 개의 필드를 지정하고 싶습니다. 하나는 id_start이며 처음 6 자리 숫자이며 id_end은 마지막 2 자리 숫자입니다.

예 : MY_ID : 123456 및 id_end : 12345678는 id_start 될 것이라고 나는 Logstash 매우 새로 온 78

을하지만 난 주위를 읽어 봤는데 그리고 내가이 작업을 수행하기 위해 grok 필터를 사용할 필요가 있다고 생각 - 첫 번째 필드를 생성하는 나의 시도는 지금까지 근무하지 않은 : 나는 또한 그것을 찾는거야

filter { 
    grok { 
    match => ["id_start", "(?<my_id>.{6})"] 
    } 
} 

매우 어려운 그래서 어떤 도움을 주시면 감사하겠습니다, 이런 종류의 물건에 좋은 예를 찾기 위해!

답변

1

당신은 ruby 필터를 사용하고 같은 사용자 정의 루비 코드를 작성할 수 있습니다 :

filter { 
    ruby { 
    code => " 
     event['id_start'] = event['my_id'][0..6] 
     event['id_end'] = event['my_id'][6..8] 
     " 
    } 
} 
+0

나를 위해 잘됐다! 감사! – millerbr

0

이것은 그들이 getter 및 setter를 구현 변수에 대한 액세스를 제한 한 Logstash 5.x를 다릅니다 +.

ruby { 
    code => " 
     event.set('[id_start]', event.get('[my_id]')[0..6]) 
     event.set('[id_end]', event.get('[my_id]')[6..8]) 
     " 
} 
관련 문제