

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 sfruttare tali indici di campo per rendere le tue `filter` query più efficienti e ridurre il volume di scansioni. 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 registro di cui è noto che non includono il campo indicizzato. Tentando di scansionare solo gli eventi di registro che sono noti per contenere quel campo indicizzato, è possibile ridurre il volume di scansione e velocizzare la query.

Per ulteriori informazioni sugli indici di campo 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 interrogazioni che prevedono `filter fieldName =...` e `filter fieldName IN...` trarranno vantaggio dai miglioramenti apportati all'indice 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** 

 L'esempio presuppone che sia stato creato un indice di campo su. `requestId` Per i gruppi di log che utilizzano questo indice di campo, la query sfrutterà gli indici di campo per tentare di analizzare il minor numero di eventi di registro per trovare eventi con `requestId` 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/
```