

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à.

# Ricerca di dati in Amazon OpenSearch Service
<a name="searching"></a>

Esistono diversi metodi comuni per la ricerca di documenti in Amazon OpenSearch Service, tra cui ricerche URI e ricerche nel corpo della richiesta. OpenSearch Il servizio offre funzionalità aggiuntive che migliorano l'esperienza di ricerca, come pacchetti personalizzati, supporto SQL e ricerca asincrona. [Per un riferimento completo all'API OpenSearch di ricerca, consulta la documentazione. OpenSearch](https://docs.opensearch.org/latest/opensearch/query-dsl/full-text/)

**Nota**  
Le seguenti richieste di esempio funzionano con OpenSearch APIs. Alcune richieste potrebbero non funzionare con versioni precedenti di Elasticsearch.

**Topics**
+ [Ricerche negli URI](#searching-uri)
+ [Ricerche nel corpo della richiesta](#searching-dsl)
+ [Paginazione dei risultati della ricerca](#searching-paginating)
+ [Linguaggio query dashboard](#DashboardsQueryLanguages)
+ [Importazione e gestione di pacchetti in Amazon Service OpenSearch](custom-packages.md)
+ [Interrogazione dei dati OpenSearch di Amazon Service con SQL](sql-support.md)
+ [Ricerca tra cluster in Amazon Service OpenSearch](cross-cluster-search.md)
+ [Imparare a classificarsi per Amazon OpenSearch Service](learning-to-rank.md)
+ [Ricerca asincrona in Amazon Service OpenSearch](asynchronous-search.md)
+ [Ricerca puntuale in Amazon OpenSearch Service](pit.md)
+ [Ricerca agente in Amazon Service OpenSearch](agentic-search.md)
+ [Ricerca semantica in Amazon Service OpenSearch](semantic-search.md)
+ [Ricerca simultanea di segmenti in Amazon Service OpenSearch](concurrent-segment-search.md)
+ [Generazione di query in linguaggio naturale in Amazon OpenSearch Service](natural-language-query.md)

## Ricerche negli URI
<a name="searching-uri"></a>

Le ricerche URI (Universal Resource Identifier) sono la forma di ricerca più semplice. In una ricerca URI, si specifica la query come un parametro di richiesta HTTP:

```
GET https://search-my-domain.us-west-1.es.amazonaws.com/_search?q=house
```

L'aspetto di una risposta di esempio è simile al seguente:

```
{
  "took": 25,
  "timed_out": false,
  "_shards": {
    "total": 10,
    "successful": 10,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 85,
      "relation": "eq",
    },
    "max_score": 6.6137657,
    "hits": [
      {
        "_index": "movies",
        "_type": "movie",
        "_id": "tt0077975",
        "_score": 6.6137657,
        "_source": {
          "directors": [
            "John Landis"
          ],
          "release_date": "1978-07-27T00:00:00Z",
          "rating": 7.5,
          "genres": [
            "Comedy",
            "Romance"
          ],
          "image_url": "http://ia.media-imdb.com/images/M/MV5BMTY2OTQxNTc1OF5BMl5BanBnXkFtZTYwNjA3NjI5._V1_SX400_.jpg",
          "plot": "At a 1962 College, Dean Vernon Wormer is determined to expel the entire Delta Tau Chi Fraternity, but those troublemakers have other plans for him.",
          "title": "Animal House",
          "rank": 527,
          "running_time_secs": 6540,
          "actors": [
            "John Belushi",
            "Karen Allen",
            "Tom Hulce"
          ],
          "year": 1978,
          "id": "tt0077975"
        }
      },
      ...
    ]
  }
}
```

Per impostazione predefinita, questa query ricerca il termine *house* in tutti i campi di tutti gli indici. Per restringere la ricerca, specifica un indice (`movies`) e un campo di documento (`title`) nell'URI:

```
GET https://search-my-domain.us-west-1.es.amazonaws.com/movies/_search?q=title:house
```

È possibile includere parametri aggiuntivi nella richiesta, ma i parametri supportati forniscono solo un piccolo sottoinsieme delle opzioni di OpenSearch ricerca. La seguente richiesta restituisce 20 risultati (anziché il numero predefinito di 10) ordinati per anno (anziché per `_score`):

```
GET https://search-my-domain.us-west-1.es.amazonaws.com/movies/_search?q=title:house&size=20&sort=year:desc
```

## Ricerche nel corpo della richiesta
<a name="searching-dsl"></a>

Per eseguire ricerche più complesse, utilizza il corpo della richiesta HTTP e il linguaggio specifico di dominio (DSL) di OpenSearch per query. Il linguaggio DSL di query ti consente di specificare l'intera gamma di valori delle opzioni di ricerca OpenSearch .

**Nota**  
Non è possibile includere caratteri speciali Unicode nel valore di un campo di testo, altrimenti il valore verrà analizzato come valori multipli separati dal carattere speciale. Questa analisi errata può portare a un filtraggio involontario dei documenti e persino compromettere il controllo sul loro accesso. Per ulteriori informazioni, vedere [Una nota sui caratteri speciali Unicode nei campi di testo](https://opensearch.org/docs/latest/opensearch/query-dsl/index/#a-note-on-unicode-special-characters-in-text-fields) nella OpenSearch documentazione.

La seguente query `match` è simile all'esempio di [ricerca URI](#searching-uri) finale:

```
POST https://search-my-domain.us-west-1.es.amazonaws.com/movies/_search
{
  "size": 20,
  "sort": {
    "year": {
      "order": "desc"
    }
  },
  "query": {
    "query_string": {
      "default_field": "title",
      "query": "house"
    }
  }
}
```

**Nota**  
L'API `_search` accetta `GET` e `POST` HTTP per ricerche del corpo della richiesta, ma non tutti i client HTTP supportano l'aggiunta di un corpo della richiesta a una richiesta `GET`. `POST` è la scelta più universale.

In molti casi, potrebbe essere necessario eseguire la ricerca in diversi campi, ma non in tutti. Utilizza la query `multi_match`:

```
POST https://search-my-domain.us-west-1.es.amazonaws.com/movies/_search
{
  "size": 20,
  "query": {
    "multi_match": {
      "query": "house",
      "fields": ["title", "plot", "actors", "directors"]
    }
  }
}
```

### Campi di boosting
<a name="searching-dsl-boost"></a>

Puoi migliorare la rilevanza della ricerca "potenziando" alcuni campi. I boost sono moltiplicatori che valutano le corrispondenze in un campo più pesantemente rispetto alle corrispondenze in altri campi. Nel seguente esempio, una corrispondenza per *john* nel campo `title` influenza `_score` il doppio di una corrispondenza nel campo `plot` e quattro volte di più di una corrispondenza nei campi `actors` o `directors`. Ne risulta che film come *John Wick* e *John Carter* sono vicini alla parte alta dei risultati della ricerca e film con protagonista John Travolta sono nella parte bassa.

```
POST https://search-my-domain.us-west-1.es.amazonaws.com/movies/_search
{
  "size": 20,
  "query": {
    "multi_match": {
      "query": "john",
      "fields": ["title^4", "plot^2", "actors", "directors"]
    }
  }
}
```

### Evidenziazione dei risultati della ricerca
<a name="searching-dsl-highlighting"></a>

L'`highlight`opzione indica OpenSearch di restituire un oggetto aggiuntivo all'interno dell'`hits`array se la query corrisponde a uno o più campi:

```
POST https://search-my-domain.us-west-1.es.amazonaws.com/movies/_search
{
  "size": 20,
  "query": {
    "multi_match": {
      "query": "house",
      "fields": ["title^4", "plot^2", "actors", "directors"]
    }
  },
  "highlight": {
    "fields": {
      "plot": {}
    }
  }
}
```

Se la query corrisponde al contenuto del campo `plot`, l'aspetto di un'occorrenza è simile al seguente:

```
{
  "_index": "movies",
  "_type": "movie",
  "_id": "tt0091541",
  "_score": 11.276199,
  "_source": {
    "directors": [
      "Richard Benjamin"
    ],
    "release_date": "1986-03-26T00:00:00Z",
    "rating": 6,
    "genres": [
      "Comedy",
      "Music"
    ],
    "image_url": "http://ia.media-imdb.com/images/M/MV5BMTIzODEzODE2OF5BMl5BanBnXkFtZTcwNjQ3ODcyMQ@@._V1_SX400_.jpg",
    "plot": "A young couple struggles to repair a hopelessly dilapidated house.",
    "title": "The Money Pit",
    "rank": 4095,
    "running_time_secs": 5460,
    "actors": [
      "Tom Hanks",
      "Shelley Long",
      "Alexander Godunov"
    ],
    "year": 1986,
    "id": "tt0091541"
  },
  "highlight": {
    "plot": [
      "A young couple struggles to repair a hopelessly dilapidated <em>house</em>."
    ]
  }
}
```

Per impostazione predefinita, OpenSearch racchiude la stringa corrispondente nei `<em>` tag, fornisce fino a 100 caratteri di contesto attorno alla corrispondenza e suddivide il contenuto in frasi identificando segni di punteggiatura, spazi, tabulazioni e interruzioni di riga. Tutte queste impostazioni sono personalizzabili:

```
POST https://search-my-domain.us-west-1.es.amazonaws.com/movies/_search
{
  "size": 20,
  "query": {
    "multi_match": {
      "query": "house",
      "fields": ["title^4", "plot^2", "actors", "directors"]
    }
  },
  "highlight": {
    "fields": {
      "plot": {}
    },
    "pre_tags": "<strong>",
    "post_tags": "</strong>",
    "fragment_size": 200,
    "boundary_chars": ".,!? "
  }
}
```

### API conteggio
<a name="searching-dsl-count"></a>

Se non sei interessato ai contenuti dei documenti e desideri solo conoscere il numero di corrispondenze, puoi utilizzare l'API `_count` anziché l'API `_search`. La seguente richiesta utilizza la query `query_string` per identificare commedie romantiche:

```
POST https://search-my-domain.us-west-1.es.amazonaws.com/movies/_count
{
  "query": {
    "query_string": {
      "default_field": "genres",
      "query": "romance AND comedy"
    }
  }
}
```

L'aspetto di una risposta di esempio è simile al seguente:

```
{
  "count": 564,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  }
}
```

## Paginazione dei risultati della ricerca
<a name="searching-paginating"></a>

Se è necessario visualizzare un gran numero di risultati di ricerca, è possibile implementare l'impaginazione utilizzando diversi metodi. 

### Point in time
<a name="pag-pit"></a>

La funzionalità point in time (PIT) è un tipo di ricerca che consente di eseguire diverse query su un set di dati fisso nel tempo. Questo è il metodo di impaginazione preferito in OpenSearch, specialmente per l'impaginazione profonda. È possibile utilizzare PIT con OpenSearch Service versione 2.5 e successive. Per ulteriori informazioni su PIT, vedere[Ricerca puntuale in Amazon OpenSearch Service](pit.md).

### I `size` parametri `from` e
<a name="pag-from-size"></a>

Il modo più semplice per impaginare è con i `size` parametri `from` and. La richiesta seguente restituisce i risultati 20-39 dell'elenco indicizzato su zero dei risultati della ricerca:

```
POST https://search-my-domain.us-west-1.es.amazonaws.com/movies/_search
{
  "from": 20,
  "size": 20,
  "query": {
    "multi_match": {
      "query": "house",
      "fields": ["title^4", "plot^2", "actors", "directors"]
    }
  }
}
```

Per ulteriori informazioni sull'impaginazione della ricerca, consulta [Impaginare i risultati nella documentazione](https://opensearch.org/docs/latest/opensearch/search/paginate/). OpenSearch 

## Linguaggio query dashboard
<a name="DashboardsQueryLanguages"></a>

Puoi utilizzare il [Dashboards Query Language (DQL)](https://opensearch.org/docs/latest/dashboards/dql/#terms-query) per cercare dati e visualizzazioni nelle dashboard. OpenSearch DQL utilizza quattro tipi di query principali: *termini*, *booleano*, *data e intervallo* e *campo nidificata*.

**Query di termine**

Una query di termini richiede di specificare il termine che si sta cercando. 

Per eseguire una query di termini, inserisci quanto segue:

```
host:www.example.com
```

**Query booleano**

Puoi utilizzare gli operatori booleani `AND`, `or` e `not` per combinare più query.

Per eseguire una query booleana, incollare quanto segue:

```
host.keyword:www.example.com and response.keyword:200
```

**Query di data e intervallo**

È possibile utilizzare una query di data e intervallo per trovare una data prima o dopo la query.
+ `>` indica una ricerca di una data successiva alla data specificata.
+ `<` indica una ricerca di una data precedente alla data specificata.

`@timestamp > "2020-12-14T09:35:33"`

**Query di campi nidificati**

Se hai un documento con campi nidificati, devi specificare quali parti del documento desideri recuperare. Di seguito è riportato un documento di esempio che contiene campi nidificati:

```
{"NBA players":[
    {"player-name": "Lebron James",
      "player-position": "Power forward",
      "points-per-game": "30.3"
    },
    {"player-name": "Kevin Durant",
      "player-position": "Power forward",
      "points-per-game": "27.1"
    },
    {"player-name": "Anthony Davis",
      "player-position": "Power forward",
      "points-per-game": "23.2"
    },
    {"player-name": "Giannis Antetokounmpo",
      "player-position": "Power forward",
      "points-per-game":"29.9"
    }
  ]
}
```

Per recuperare un campo specifico utilizzando DQL, incollare quanto segue:

```
NBA players: {player-name: Lebron James}
```

Per recuperare più oggetti dal documento nidificato, incollare quanto segue:

```
NBA players: {player-name: Lebron James} and NBA players: {player-name: Giannis Antetokounmpo}
```

Per eseguire una ricerca all'interno di un intervallo, incolla quanto segue:

```
NBA players: {player-name: Lebron James} and NBA players: {player-name: Giannis Antetokounmpo and < 30}
```

Se il documento ha un oggetto nidificato all'interno di un altro oggetto, è comunque possibile recuperare i dati specificando tutti i livelli. A tale scopo, copia quanto segue:

```
Top-Power-forwards.NBA players: {player-name:Lebron James}
```