

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

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

 Utilizza `filter` per ottenere log eventi che corrispondono a una o più condizioni. 

 ** Esempio: filtrare i log eventi utilizzando una condizione ** 

 Il frammento di codice mostra un esempio di query che restituisce tutti i log eventi in cui il valore per `range` è maggiore di ***3000***. La query limita i risultati a 20 log eventi e li ordina per `@timestamp` e in ordine decrescente. 

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

 ** Esempio: filtrare i log eventi utilizzando più di una condizione ** 

 È possibile utilizzare le parole chiave `and` e `or` per combinare più condizioni. 

 Il frammento di codice mostra un esempio di query che restituisce tutti i log eventi in cui il valore per `range` è maggiore di ***3000*** e il valore per `accountId` è uguale a ***123456789012***. La query limita i risultati a 20 log eventi e li ordina per `@timestamp` e in ordine decrescente. 

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

## Campi indicizzati e comando filter
<a name="CWL_QuerySyntax-index"></a>

Se hai creato indici di campo per un gruppo di log, puoi utilizzarli per rendere le tue `filter` query più efficienti e ridurre il volume scansionato. Ad esempio, supponiamo di aver creato un indice di campo per. `requestId` Quindi, qualsiasi query di CloudWatch Logs Insights su quel gruppo di log che includa `filter requestId = {{value}}` o `filter requestId IN [{{value}}, {{value}}, ...]` tenterà di ignorare l'elaborazione di eventi di log noti per non includere il campo indicizzato. Tentando di scansionare solo gli eventi di registro noti per contenere quel campo indicizzato, è possibile ridurre il volume di scansione e velocizzare l'interrogazione.

Per ulteriori informazioni sugli indici dei campi e su come crearli, vedere. [Crea indici di campo per migliorare le prestazioni delle query e ridurre il volume di scansione](CloudWatchLogs-Field-Indexing.md)

**Importante**  
Solo le query con `filter {{fieldName}} =...` e `filter {{fieldName}} IN...` trarranno beneficio dai miglioramenti degli indici di campo. Le query con `filter {{fieldName}} like` non utilizzano indici e analizzano sempre tutti gli eventi di registro nei gruppi di log selezionati.

**Esempio: trova gli eventi di registro correlati a un determinato ID di richiesta, utilizzando gli indici ** 

 Questo esempio presuppone che tu abbia creato un indice di campo su. `requestId` Per i gruppi di log che utilizzano questo indice di campo, la query utilizzerà gli indici dei campi per tentare di scansionare il minor numero di eventi di registro per trovare eventi `requestId` con un valore di `123456` 

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

## Corrispondenze ed espressioni regolari nel comando di filtro
<a name="CWL_QuerySyntax-regex"></a>

Il comando di filtro supporta l'uso di espressioni regolari. Puoi utilizzare i seguenti operatori di confronto (`=`, `!=`, `<`, `<=`, `>`, `>=`) e operatori booleani (`and`, `or` e `not`).

Puoi utilizzare la parola chiave `in` per verificare l'appartenenza impostata e la presenza di elementi in una matrice. Per verificare la presenza di elementi in una matrice, posiziona la matrice subito dopo `in`. Puoi utilizzare l'operatore booleano `not` con `in`. Puoi creare query che utilizzano `in` per restituire log eventi in cui i campi sono le stringhe corrispondenti. I campi devono essere stringhe complete. Ad esempio, il seguente frammento di codice mostra una query che utilizza `in` per restituire log eventi in cui il campo `logGroup` è la stringa completa `example_group`.

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

Puoi utilizzare le frasi di parole chiave `like` e `not like` per restituire le sottostringhe corrispondenti. Puoi utilizzare l'operatore di espressione regolare `=~` per restituire le sottostringhe corrispondenti. Per restituire una sottostringa corrispondente con `like` e `not like`, racchiudi la sottostringa tra virgolette singole o doppie. Puoi utilizzare modelli di espressioni regolari con `like` e `not like`. Per restituire una sottostringa corrispondente con l'operatore dell'espressione regolare, racchiudi la sottostringa tra le barre. Gli esempi seguenti contengono frammenti di codice che mostrano come è possibile restituire le sottostringhe corrispondenti utilizzando il comando `filter`.

**Esempi: corrispondenza di sottostringhe**

 I tre esempi seguenti restituiscono log eventi in cui `f1` contiene la parola ***Exception***. I tre esempi fanno distinzione tra lettere maiuscole e minuscole. 

Il primo esempio restituisce una sottostringa corrispondente con `like`. 

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

 Il secondo esempio restituisce una sottostringa corrispondente con `like` e un modello di espressione regolare. 

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

 Il terzo esempio restituisce una sottostringa corrispondente con un'espressione regolare. 

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

**Esempio: corrispondenza di sottostringhe con caratteri jolly**

 Puoi utilizzare il simbolo dei due punti (`.`) come carattere jolly nelle espressioni regolari per restituire le sottostringhe corrispondenti. Nell'esempio seguente, la query restituisce le corrispondenze in cui il valore per `f1` inizia con la stringa `ServiceLog`. 

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

 Puoi posizionare un asterisco dopo il simbolo del punto (`.*`) per creare un quantificatore greedy che restituisca il maggior numero possibile di corrispondenze. Ad esempio, la query seguente restituisce i risultati in cui il valore per `f1` non inizia solo con la stringa `ServiceLog`, ma include anche la stringa `ServiceLog`. 

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

 Le possibili corrispondenze possono essere formattate come segue: 
+  `ServiceLogSampleApiLogGroup` 
+  `SampleApiLogGroupServiceLog` 

**Esempio: esclusione di sottostringhe dalle corrispondenze**

Il seguente esempio mostra una query che restituisce log eventi in cui `f1` non contiene la parola ***Exception***. L'esempio fa distinzione tra maiuscole e minuscole.

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

**Esempio: corrispondenza di sottostringhe con modelli che non fanno distinzione tra maiuscole e minuscole**

Puoi associare le sottostringhe che non fanno distinzione tra maiuscole e minuscole con espressioni `like` e regolari. Posiziona il parametro (**?i**) prima della sottostringa corrispondente che desideri restituire. Il seguente esempio mostra una query che restituisce log eventi in cui `f1` contiene la parola ***Exception*** o ***exception***.

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