

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

# OpenSearch Connessioni di servizio
<a name="aws-glue-programming-etl-connect-opensearch-home"></a>

Puoi usare AWS Glue for Spark per leggere e scrivere su tabelle in OpenSearch Service in AWS Glue 4.0 e versioni successive. Puoi definire cosa leggere dal OpenSearch Servizio con una OpenSearch query. Ti connetti al OpenSearch servizio utilizzando le credenziali di autenticazione di base HTTP archiviate Gestione dei segreti AWS tramite una connessione AWS Glue. Questa funzionalità non è compatibile con OpenSearch Service serverless.

Per ulteriori informazioni su Amazon OpenSearch Service, consulta la [documentazione OpenSearch di Amazon Service](https://docs.aws.amazon.com/opensearch-service/).

## Configurazione delle connessioni OpenSearch al servizio
<a name="aws-glue-programming-etl-connect-opensearch-configure"></a>

Per connetterti a OpenSearch Service da AWS Glue, dovrai creare e archiviare le tue credenziali OpenSearch Service in modo Gestione dei segreti AWS segreto, quindi associare quel segreto a una connessione OpenSearch Service AWS Glue.

**Prerequisiti:** 
+ Identifica l'endpoint {{aosEndpoint}} e la porta del dominio da {{aosPort}} cui desideri leggere o crea la risorsa seguendo le istruzioni nella documentazione di Amazon OpenSearch Service. Per ulteriori informazioni sulla creazione di un dominio, consulta [Creazione e gestione di domini Amazon OpenSearch Service](https://docs.aws.amazon.com//opensearch-service/latest/developerguide/createupdatedomains.html) nella documentazione di Amazon OpenSearch Service.

  Un endpoint OpenSearch di dominio Amazon Service avrà il seguente modulo predefinito, https://search - {{domainName}} -{{unstructuredIdContent}}. {{region}}.es.amazonaws.com. Per ulteriori informazioni sull'identificazione dell'endpoint del tuo dominio, consulta [Creazione e gestione dei domini Amazon OpenSearch Service](https://docs.aws.amazon.com//opensearch-service/latest/developerguide/createupdatedomains.html) nella documentazione di Amazon OpenSearch Service. 

  Identifica o genera credenziali di autenticazione HTTP di base {{aosUser}} e {{aosPassword}} per il tuo dominio.

**Per configurare una connessione al OpenSearch servizio:**

1. In Gestione dei segreti AWS, crea un segreto utilizzando le tue credenziali OpenSearch di servizio. Per creare un segreto in Secrets Manager, segui il tutorial disponibile in [Crea un Gestione dei segreti AWS segreto](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html) nella Gestione dei segreti AWS documentazione. Dopo aver creato il segreto, mantieni il nome del segreto {{secretName}} per il passaggio successivo. 
   + Quando selezionate le **coppie chiave/valore**, create una coppia per la chiave `USERNAME` con il valore. {{aosUser}}
   + Quando selezionate le **coppie chiave/valore**, create una coppia per la chiave `PASSWORD` con il valore. {{aosPassword}}

1. Nella console AWS Glue, crea una connessione seguendo i passaggi riportati di seguito[Aggiungere una AWS Glue connessione](console-connections.md). Dopo aver creato la connessione, mantieni il nome della connessione{{connectionName}}, per utilizzi futuri in AWS Glue. 
   + Quando selezioni un **tipo di connessione**, seleziona OpenSearch Servizio.
   + Quando selezioni un endpoint di dominio, fornisci{{aosEndpoint}}.
   + Quando selezioni una porta, fornisci{{aosPort}}.
   + Quando selezioni un **AWS segreto**, fornisci{{secretName}}.

Dopo aver creato una connessione OpenSearch al servizio AWS Glue, dovrai eseguire i seguenti passaggi prima di eseguire il lavoro AWS Glue:
+ Concedi al ruolo IAM associato al tuo lavoro AWS Glue il permesso di lettura{{secretName}}.
+ Nella configurazione del lavoro AWS Glue, fornisci {{connectionName}} una **connessione di rete aggiuntiva**.

## Lettura dagli indici OpenSearch dei servizi
<a name="aws-glue-programming-etl-connect-opensearch-read"></a>

**Prerequisiti:** 
+ Un indice dei OpenSearch servizi da cui desideri leggere,{{aosIndex}}.
+ Una connessione AWS Glue OpenSearch Service configurata per fornire informazioni di autenticazione e posizione di rete. Per acquisirla, completa i passaggi della procedura precedente, *Per configurare una connessione al OpenSearch servizio*. Avrai bisogno del nome della connessione AWS Glue,{{connectionName}}. 

Questo esempio legge un indice da Amazon OpenSearch Service. Dovrai fornire il parametro `pushdown`.

Esempio: 

```
opensearch_read = glueContext.create_dynamic_frame.from_options(
    connection_type="opensearch",
    connection_options={
        "connectionName": "{{connectionName}}",
        "opensearch.resource": "{{aosIndex}}",
        "pushdown": "true",
    }
)
```

Puoi anche fornire una stringa di query per filtrare i risultati restituiti nel tuo DynamicFrame. Sarà necessario configurare `opensearch.query`.

`opensearch.query`può accettare una stringa di parametri di query URL {{queryString}} o un oggetto JSON DSL di query. {{queryObject}} Per ulteriori informazioni sulla query DSL, vedere [Query DSL](https://opensearch.org/docs/latest/query-dsl/index/) nella documentazione. OpenSearch Per fornire una stringa di parametri di query URL, anteponi `?q=` alla query, come faresti con un URL completo. Per fornire un oggetto di query DSL, la stringa evita l'oggetto JSON prima di fornirlo.

Esempio: 

```
            queryObject = "{ "query": { "multi_match": { "query": "Sample", "fields": [ "sample" ] } } }"
            queryString = "?q={{queryString}}"
            
            opensearch_read_query = glueContext.create_dynamic_frame.from_options(
    connection_type="opensearch",
    connection_options={
        "connectionName": "{{connectionName}}",
        "opensearch.resource": "{{aosIndex}}",
        "opensearch.query": queryString,
        "pushdown": "true",
    }
)
```

Per ulteriori informazioni su come creare una query al di fuori della relativa sintassi specifica, vedi Sintassi della [stringa di query nella documentazione](https://opensearch.org/docs/latest/query-dsl/full-text/query-string/#query-string-syntax). OpenSearch 

Quando si leggono da OpenSearch raccolte che contengono dati di tipo array, è necessario specificare quali campi sono di tipo array nella chiamata al metodo utilizzando il `opensearch.read.field.as.array.include` parametro. 

Ad esempio, durante la lettura del documento seguente incontrerai i campi di array `genre` e `actor`:

```
{
    "_index": "movies",
    "_id": "2",
    "_version": 1,
    "_seq_no": 0,
    "_primary_term": 1,
    "found": true,
    "_source": {
        "director": "Frankenheimer, John",
        "genre": [
            "Drama",
            "Mystery",
            "Thriller",
            "Crime"
        ],
        "year": 1962,
        "actor": [
            "Lansbury, Angela",
            "Sinatra, Frank",
            "Leigh, Janet",
            "Harvey, Laurence",
            "Silva, Henry",
            "Frees, Paul",
            "Gregory, James",
            "Bissell, Whit",
            "McGiver, John",
            "Parrish, Leslie",
            "Edwards, James",
            "Flowers, Bess",
            "Dhiegh, Khigh",
            "Payne, Julie",
            "Kleeb, Helen",
            "Gray, Joe",
            "Nalder, Reggie",
            "Stevens, Bert",
            "Masters, Michael",
            "Lowell, Tom"
        ],
        "title": "The Manchurian Candidate"
    }
}
```

In questo caso, dovrai includere i nomi dei campi in questione nella chiamata al metodo. Esempio:

```
"opensearch.read.field.as.array.include": "genre,actor"
```

Se il campo dell'array è annidato all'interno della struttura del documento, fai riferimento a esso utilizzando la notazione a punti: `"genre,actor,foo.bar.baz"`. Ciò specificherebbe un array `baz` incluso nel documento di origine tramite il documento incorporato `foo` contenente il documento incorporato `bar`.

## Scrittura nelle tabelle OpenSearch dei servizi
<a name="aws-glue-programming-etl-connect-opensearch-write"></a>

Questo esempio scrive informazioni da un servizio esistente DynamicFrame {{dynamicFrame}} a OpenSearch Service. Se l'indice contiene già informazioni, AWS Glue aggiungerà i dati dal tuo DynamicFrame. Dovrai fornire il parametro `pushdown`.

**Prerequisiti:** 
+ Una tabella dei OpenSearch servizi su cui scrivere. Avrai bisogno delle informazioni di identificazione per la tabella. Chiamiamo questo{{tableName}}.
+ Una connessione AWS Glue OpenSearch Service configurata per fornire informazioni di autenticazione e posizione di rete. Per acquisirla, completa i passaggi della procedura precedente, *Per configurare una connessione al OpenSearch servizio*. Avrai bisogno del nome della connessione AWS Glue,{{connectionName}}. 

Esempio: 

```
glueContext.write_dynamic_frame.from_options(
    frame={{dynamicFrame}},
    connection_type="opensearch",
    connection_options={
      "connectionName": "{{connectionName}}",
      "opensearch.resource": "{{aosIndex}}",
    },
)
```

## OpenSearch Riferimento all'opzione di connessione al servizio
<a name="aws-glue-programming-etl-connect-opensearch-reference"></a>
+ `connectionName`: obbligatorio. Utilizzato per la lettura/scrittura. Il nome di una connessione al AWS Glue OpenSearch Service configurata per fornire informazioni di autenticazione e posizione di rete al metodo di connessione utilizzato.
+ `opensearch.resource`: obbligatorio. Utilizzato per la lettura/scrittura. Valori validi: nomi degli OpenSearch indici. Il nome dell'indice con cui interagirà il metodo di connessione.
+ `opensearch.query`: utilizzato per la lettura. Valori validi: stringa con escape JSON o, quando inizia con `?`, la parte di ricerca di un URL. Una OpenSearch query che filtra ciò che deve essere recuperato durante la lettura. Per ulteriori informazioni sull'utilizzo di questo parametro, consulta la sezione precedente [Lettura dagli indici OpenSearch dei servizi](#aws-glue-programming-etl-connect-opensearch-read).
+ `pushdown` — Richiesto se. Utilizzato per la lettura. Valori validi: booleani. Indica a Spark di passare le query di lettura in OpenSearch modo che il database restituisca solo i documenti pertinenti.
+ `opensearch.read.field.as.array.include`: richiesto se si leggono dati di tipo array. Utilizzato per la lettura. Valori validi: elenchi di nomi di campi separati da virgole. Specifica i campi da leggere come matrici dai documenti. OpenSearch Per ulteriori informazioni sull'utilizzo di questo parametro, consulta la sezione precedente [Lettura dagli indici OpenSearch dei servizi](#aws-glue-programming-etl-connect-opensearch-read).