2017-02-27 1 views
0

Ich Abfrage Logstash Also mit dieser Abfrage, die die Dinge alle von dem Stapel von oben zurück:Wie ein Ereignis markieren als „betrachtet“ in Logstash

{ 
"query": { 
"match_all": { } 
}, 
"size": 7, 
"_source": { 
"includes": [ "transport", "dest", "packet_source", "id_orig_p", "id_orig_p", "id_orig_h", "conn_state", "id_resp_h", "id_resp_p", "service", "proto" ] 
} , 
"sort": [ 
    { 
    "@timestamp": { 
    "order": "desc" 
    } 
} 
] 
} 

jedoch, wie ich die Abfrage Daten dann erhalte ich Duplikate, wenn keine neuen Daten eintreffen. Gibt es eine Möglichkeit, jede eindeutige Ereignis-ID als "LookedAt" mit einem ganzzahligen Feld oder etwas zu markieren?

Ich muss dies tun, um die Garbage Collection meiner Abfragen in C# zu reduzieren, aber alle IDs zu speichern und String Vergleiche zu tun ist ziemlich schwer und scheint unnötig, wenn ich Logstash habe.

Antwort

1

Ich schlage vor, einen Zeitstempel zu verwenden und ihn in Ihre Abfrage einzubeziehen. Aus den Ergebnissen der ersten Abfrage können Sie z. B. den Zeitstempel des letzten Ereignisses (d. H. Den ersten in den Ergebnissen) nehmen und dann bei der zweiten Abfrage nach Ereignissen fragen, deren Zeitstempel höher als dieser Zeitstempel ist.

Also, machen Sie die erste Abfrage:

{ 
    "query": { 
    "match_all": {} 
    }, 
    "size": 7, 
    "_source": { 
    "includes": [ 
     "transport", 
     ... 
    ] 
    }, 
    "sort": [ 
    { 
     "@timestamp": { 
     "order": "desc" 
     } 
    } 
    ] 
} 

Dann sagen, dass in den Ergebnissen der Zeitstempel des letzten Ereignisses 2017-02-28T10:02:23.000Z ist.

wäre die nächste Abfrage dann:

{ 
    "query": { 
    "range": { 
     "timestamp": { 
     "gt": "2017-02-28T10:02:23.000Z" 
     } 
    } 
    }, 
    "size": 7, 
    "_source": { 
    "includes": [ 
     "transport", 
     ... 
    ] 
    }, 
    "sort": [ 
    { 
     "@timestamp": { 
     "order": "desc" 
     } 
    } 
    ] 
} 

Und so weiter, dann würden Sie garantiert werden, nie eine doppelte Veranstaltung.

+0

bekomme ich folgende Fehlermeldung, wenn das zu tun: '{ "Fehler": { "Wurzel_Ursache": [ { "type": "parsing_exception", "Grund":„[Bereich] Abfrage tun nicht unterstützt [runtime_timestamp] " "Linie": 5, "col": 9 } ], "type": "parsing_exception", "Grund":" [Bereich] Abfrage nicht unterstützt [runtime_timestamp] ", " Zeile ": 5, " Spalte ": 9 }, " Status ": 400 } ' – BenjaFriend

+0

Was ist der Typ Ihres Felds' runtime_timestamp'? – Val

+0

Yup das funktioniert – BenjaFriend

Verwandte Themen