filterIndex - CloudWatch Amazon-Protokolle

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

filterIndex

Wird verwendet, filterIndex um nur indizierte Daten zurückzugeben, indem eine Abfrage erzwungen wird, nur Protokollgruppen zu scannen, die für ein Feld indiziert sind, das Sie in der Abfrage angeben. Für diese Protokollgruppen, die in diesem Feld indexiert sind, wird die Abfrage weiter optimiert, indem die Protokollgruppen übersprungen werden, die keine Protokollereignisse enthalten, die das in der Abfrage für das indizierte Feld angegebene Feld enthalten. Das gescannte Volumen wird weiter reduziert, indem versucht wird, nur Protokollereignisse aus diesen Protokollgruppen zu scannen, die dem in der Abfrage für diesen Feldindex angegebenen Wert entsprechen. Weitere Informationen zu Feldindizes und deren Erstellung finden Sie unterErstellen Sie Feldindizes, um die Abfrageleistung zu verbessern und das Scanvolumen zu reduzieren.

filterIndexMithilfe indizierter Felder können Sie Protokollgruppen, die Petabyte an Protokolldaten enthalten, effizient abfragen, da der tatsächliche Suchbereich auf Protokollgruppen und Protokollereignisse mit Feldindizes beschränkt wird.

Nehmen wir beispielsweise an, Sie haben für einige Protokollgruppen IPaddress in Ihrem Konto einen Feldindex erstellt. Sie können dann die folgende Abfrage erstellen und alle Protokollgruppen im Konto abfragen, um nach Protokollereignissen zu suchen, die den Wert 198.51.100.0 im IPaddress Feld enthalten.

fields @timestamp, @message | filterIndex IPaddress = "198.51.100.0" | limit 20

Der filterIndex Befehl veranlasst diese Abfrage, alle Protokollgruppen zu überspringen, für IPaddress die kein Index erstellt wurde. Darüber hinaus überspringt die Abfrage innerhalb der indizierten Protokollgruppen Protokollereignisse, die zwar ein IPaddress Feld haben, aber nicht 198.51.100.0 als Wert für dieses Feld beobachtet wurden.

Verwenden Sie den IN Operator, um die Ergebnisse auf einen beliebigen Wert für die indizierten Felder zu erweitern. Im folgenden Beispiel werden Protokollereignisse gefunden, die entweder den Wert 198.51.100.0 oder das 198.51.100.1 IPaddress Feld enthalten.

fields @timestamp, @message | filterIndex IPaddress in ["198.51.100.0", "198.51.100.1"] | limit 20

CloudWatch Logs stellt Standardfeldindizes für alle Protokollgruppen in der Standard-Protokollklasse bereit. Standardfeldindizes sind automatisch für die folgenden Felder verfügbar:

  • @logStream

  • @aws.region

  • @aws.account

  • @source.log

  • traceId

Standardfeldindizes gelten zusätzlich zu allen benutzerdefinierten Feldindizes, die Sie in Ihrer Richtlinie definieren. Standardfeldindizes werden nicht auf Ihr Feldindexkontingent angerechnet.

FilterIndex im Vergleich zu Filter

Sehen Sie sich die folgenden Beispielabfragen anfilter, um den Unterschied zwischen filterIndex und zu verdeutlichen. Gehen Sie davon ausIPaddress, dass Sie einen Feldindex für vier Ihrer Protokollgruppen erstellt haben, aber nicht für eine fünfte Protokollgruppe. Bei der folgenden Abfrage filterIndex wird das Scannen der Protokollgruppe übersprungen, für die das Feld nicht indexiert ist. Für jede indizierte Protokollgruppe wird versucht, nur Protokollereignisse zu scannen, bei denen das indizierte Feld vorhanden ist, und es werden auch nur Ergebnisse zurückgegeben, die nach der Erstellung des Feldindexes erstellt wurden.

fields @timestamp, @message | filterIndex IPaddress = "198.51.100.0" | limit 20

Wenn Sie dagegen filter statt filterIndex für eine Abfrage derselben fünf Protokollgruppen verwenden, versucht die Abfrage, nicht nur die Protokollereignisse zu scannen, die den Wert in den indizierten Protokollgruppen enthalten, sondern auch die fünfte Protokollgruppe, die nicht indexiert ist, und scannt jedes Protokollereignis in dieser fünften Protokollgruppe.

fields @timestamp, @message | filter IPaddress = "198.51.100.0" | limit 20