

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.

# Filter
<a name="CWL_QuerySyntax-Filter"></a>

 Verwenden Sie `filter`, um Protokollereignisse abzurufen, die einer oder mehreren Bedingungen entsprechen. 

 ** Beispiel: Filtern von Protokollereignissen mithilfe einer Bedingung ** 

 Das Code-Snippet zeigt ein Beispiel für eine Abfrage, die alle Protokollereignisse zurückgibt, deren Wert für `range` größer als ***3 000*** ist. Die Abfrage begrenzt die Ergebnisse auf 20 Protokollereignisse und sortiert die Protokollereignisse nach `@timestamp` und in absteigender Reihenfolge. 

```
fields @timestamp, @message
| filter (range>3000)
| sort @timestamp desc
| limit 20
```

 ** Beispiel: Filtern von Protokollereignissen mit mehr als einer Bedingung ** 

 Sie können die Schlüsselwörter `and` und `or` verwenden, um mehr als eine Bedingung zu kombinieren. 

 Der Codeausschnitt zeigt ein Beispiel für Protokollereignisse, bei denen der Wert für `range` größer als ***3 000*** und der Wert für `accountId` gleich ***123 456 789 012*** ist. Die Abfrage begrenzt die Ergebnisse auf 20 Protokollereignisse und sortiert die Protokollereignisse nach `@timestamp` und in absteigender Reihenfolge. 

```
fields @timestamp, @message
| filter (range>3000 and accountId=123456789012)
| sort @timestamp desc
| limit 20
```

## Indizierte Felder und der Filterbefehl
<a name="CWL_QuerySyntax-index"></a>

Wenn Sie Feldindizes für eine Protokollgruppe erstellt haben, können Sie diese Feldindizes nutzen, um Ihre `filter` Abfragen effizienter zu gestalten und das gescannte Volumen zu reduzieren. Nehmen wir beispielsweise an, Sie haben einen Feldindex für erstellt. `requestId` Dann jede CloudWatch Logs Insights-Abfrage für diese Protokollgruppe, die Protokollereignisse enthält `filter requestId = value` oder versucht, `filter requestId IN [value, value, ...]` die Verarbeitung von Protokollereignissen zu überspringen, von denen bekannt ist, dass sie das indizierte Feld nicht enthalten. Wenn Sie versuchen, nur die Protokollereignisse zu scannen, von denen bekannt ist, dass sie dieses indizierte Feld enthalten, kann das Scanvolumen reduziert und die Abfrage beschleunigt werden.

Weitere Informationen zu Feldindizes und deren Erstellung finden Sie unter. [Erstellen Sie Feldindizes, um die Abfrageleistung zu verbessern und das Scanvolumen zu reduzieren](CloudWatchLogs-Field-Indexing.md)

**Wichtig**  
Nur Abfragen mit `filter fieldName =...` und `filter fieldName IN...` profitieren von den Verbesserungen des Feldindexes. Abfragen mit verwenden `filter fieldName like` keine Indizes und scannen immer alle Protokollereignisse in den ausgewählten Protokollgruppen.

**Beispiel: Suchen Sie mithilfe von Indizes nach Protokollereignissen, die sich auf eine bestimmte Anforderungs-ID beziehen** 

 In diesem Beispiel wird davon ausgegangen, dass Sie einen Feldindex für erstellt haben. `requestId` Bei Protokollgruppen, die diesen Feldindex verwenden, versucht die Abfrage anhand von Feldindizes, die geringste Anzahl von Protokollereignissen nach Ereignissen `requestId` mit einem Wert von zu durchsuchen `123456` 

```
fields @timestamp, @message
| filter requestId = "1234656"
| limit 20
```

## Übereinstimmungen und Reguläre Ausdrücke im Filterbefehl
<a name="CWL_QuerySyntax-regex"></a>

Der Filterbefehl unterstützt die Verwendung regulärer Ausdrücke. Sie können die folgenden Vergleichsoperatoren (`=`, `!=`, `<`, `<=`, `>`, `>=`) und Booleschen Operatoren (`and`, `or` und `not`) verwenden.

Sie können das Schlüsselwort `in` verwenden, um auf eine festgelegte Mitgliedschaft zu testen und auf Elemente in einem Array zu prüfen. Platzieren Sie das Array nach `in`, um auf Elemente in einem Array zu prüfen. Sie können den Booleschen Operator `not` mit `in` verwenden. Sie können Abfragen erstellen, die `in` verwenden, um Protokollereignisse zurückzugeben, die mit Zeichenfolgen übereinstimmen. Die Felder müssen vollständige Zeichenfolgen sein. Der folgende Codeausschnitt zeigt beispielsweise eine Abfrage, die `in` verwendet, um Protokollereignisse zurückzugeben, wobei das Feld `logGroup` die vollständige Zeichenfolge `example_group` ist.

```
fields @timestamp, @message
| filter logGroup in ["example_group"]
```

Sie können die Schlüsselwortausdrücke `like` und `not like` für den Abgleich mit Teilzeichenfolgen verwenden. Sie können den Operator für reguläre Ausdrücke `=~` für den Abgleich mit Teilzeichenfolgen verwenden. Schließen Sie für den Abgleich einer Teilzeichenfolge mit `like` und `not like` die Teilzeichenfolge, die abgeglichen werden soll, in einfache oder doppelte Anführungszeichen ein. Sie können Muster von regulären Ausdrücken mit `like` und `not like` verwenden. Um eine Teilzeichenfolge mit dem Operator für reguläre Ausdrücke abzugleichen, schließen Sie die Teilzeichenfolge, die Sie abgleichen möchten, in Schrägstriche ein. Die folgenden Beispiele enthalten Code-Snippets, die zeigen, wie Sie Teilzeichenfolgen mit dem Befehl `filter` abgleichen können.

**Beispiele: Abgleich von Teilzeichenfolgen**

 Die folgenden drei Beispiele geben Protokollereignisse zurück, bei denen `f1` das Wort ***Exception*** (Ausnahme) enthält. Bei allen drei Beispielen muss die Groß-/Kleinschreibung beachtet werden. 

Das erste Beispiel gleicht eine Teilzeichenfolge mit `like` ab. 

```
fields f1, f2, f3 
| filter f1 like "Exception"
```

 Das zweite Beispiel gleicht eine Teilzeichenfolge mit `like` und einem Muster von regulären Ausdrücken ab. 

```
fields f1, f2, f3 
| filter f1 like /Exception/
```

 Das dritte Beispiel gleicht eine Teilzeichenfolge mit einem regulären Ausdruck ab. 

```
fields f1, f2, f3 
| filter f1 =~ /Exception/
```

**Beispiel: Abgleichen von Teilzeichenfolgen mit Platzhaltern**

 Sie können das Punktsymbol (`.`) als Platzhalter in regulären Ausdrücken verwenden, um Teilzeichenfolgen abzugleichen. Im folgenden Beispiel gibt die Abfrage Übereinstimmungen zurück, bei denen der Wert für `f1` mit der Zeichenfolge `ServiceLog` beginnt. 

```
fields f1, f2, f3
| filter f1 like /ServiceLog./
```

 Sie können ein Sternchen nach dem Punktsymbol (`.*`) platzieren, um einen gierigen Quantifizierer zu erstellen, der so viele Übereinstimmungen wie möglich zurückgibt. Beispielsweise gibt die folgende Abfrage Übereinstimmungen zurück, bei denen der Wert für `f1` nicht nur mit der Zeichenfolge `ServiceLog` beginnt, sondern auch die Zeichenfolge `ServiceLog` beinhaltet. 

```
fields f1, f2, f3
| filter f1 like /ServiceLog.*/
```

 Mögliche Übereinstimmungen können wie folgt formatiert werden: 
+  `ServiceLogSampleApiLogGroup` 
+  `SampleApiLogGroupServiceLog` 

**Beispiel: Ausschließen von Teilzeichenfolgen aus Abgleichen**

Das folgende Beispiel zeigt eine Abfrage, die Protokollereignisse zurückgibt, bei denen `f1` nicht das Wort ***Exception*** (Ausnahme) enthält. Das Beispiel berücksichtigt Groß- und Kleinschreibung.

```
fields f1, f2, f3 
| filter f1 not like "Exception"
```

**Beispiel: Abgleichen von Teilzeichenfolgen mit Mustern, die Groß- und Kleinschreibung nicht berücksichtigen**

Sie können Teilzeichenfolgen, bei denen die Groß-/Kleinschreibung nicht beachtet wird, mit `like` und regulären Ausdrücken abgleichen. Platzieren Sie den folgenden Parameter (**?i**) vor der Teilzeichenfolge, die Sie abgleichen möchten. Das folgende Beispiel zeigt eine Abfrage, die Protokollereignisse zurückgibt, bei denen `f1` das Wort ***Exception*** (Ausnahme) oder ***exception*** (ausnahme) enthält.

```
fields f1, f2, f3 
| filter f1 like /(?i)Exception/
```