2016-03-28 7 views
0

ich denselben Domain-Namen in meinen Logs haben:Logstash: Entfernen Subdomäne mit Regular Expression

queryname= domain.com 
queryname= sub1.domain.com 
queryname= sub-2.sub1.domain.com 
queryname= suB3.sub-2.sub1.domain.com 

ich in logstash bekommen Domains nur ohne Sub-Domain. Wie kann es in Mutate gsub tun?

Der Versuch, so zu tun, aber es funktioniert nicht

mutate { 
    gsub => [ "queryname", "(?!([a-zA-Z0-9\-]{0,61})\.([a-zA-Z]{2,6})$)", "" ] 
} 

ein wenig verwirrt, wird jede Beratung glücklich sein. Dank

+0

Zur Bestätigung möchten Sie nur die erste Abfrage ausgewählt haben, ja? Oder möchten Sie 'domain.com' aus jeder einzelnen dieser Abfragen auswählen? – Druzion

+1

"domain.com" (Second-Level-Domain) von jeder Zeichenfolge – kllaud

Antwort

0

Versuchen Sie, diese RegEx:

queryname=\s*([\w-]+\.)*(\w+\.\w+)$ 

Live Demo on Regex101


Wie es funktioniert:

queryname=\s*  # 'queryname= ' Part 
(     # Sub-Domains 
    [\w-]+    # Letters 
    \.     # . (Dot) 
)*      # Sub-Domains are Optional 
(     # domain.com 
    \w+     # Letters (domain) 
    \.     # . (Dot) 
    \w+     # Letters (com) 
) 
$     # ... String ends with Sub-Domain 

Die Domain wird in der zweiten Gruppe gespeichert werden

+0

Sorry, aber in logstash es die ganze Linie bekommen, teilt nicht Subdomains. – kllaud