

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Konektor Amazon Athena OpenSearch
<a name="connectors-opensearch"></a>

OpenSearch Layanan

 OpenSearch Konektor Amazon Athena memungkinkan Amazon Athena berkomunikasi dengan instans OpenSearch Anda sehingga Anda dapat menggunakan SQL untuk menanyakan data Anda. OpenSearch 

Konektor ini dapat didaftarkan dengan Glue Data Catalog sebagai katalog federasi. Ini mendukung kontrol akses data yang didefinisikan dalam Lake Formation di katalog, database, tabel, kolom, baris, dan tingkat tag. Konektor ini menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue.

**catatan**  
Karena masalah yang diketahui, OpenSearch konektor tidak dapat digunakan dengan VPC.

Jika Anda mengaktifkan Lake Formation di akun Anda, peran IAM untuk konektor Lambda federasi Athena yang Anda gunakan harus memiliki akses baca di AWS Serverless Application Repository Lake Formation ke. AWS Glue Data Catalog

## Prasyarat
<a name="connectors-opensearch-prerequisites"></a>
+ Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md) atau [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md).

## Istilah
<a name="connectors-opensearch-terms"></a>

Istilah-istilah berikut berhubungan dengan OpenSearch konektor.
+ **Domain** — Nama yang dihubungkan oleh konektor ini dengan titik akhir instans Anda OpenSearch . Domain juga digunakan sebagai nama database. Untuk OpenSearch instance yang ditentukan dalam OpenSearch Layanan Amazon, domain dapat ditemukan secara otomatis. Untuk contoh lain, Anda harus menyediakan pemetaan antara nama domain dan titik akhir.
+ **Indeks** — Tabel database yang didefinisikan dalam OpenSearch contoh Anda.
+ **Pemetaan** — Jika indeks adalah tabel database, maka pemetaan adalah skemanya (yaitu, definisi bidang dan atributnya).

  Konektor ini mendukung pengambilan metadata dari OpenSearch instance dan dari file. AWS Glue Data Catalog Jika konektor menemukan AWS Glue database dan tabel yang cocok dengan nama OpenSearch domain dan indeks Anda, konektor mencoba menggunakannya untuk definisi skema. Kami menyarankan Anda membuat AWS Glue tabel Anda sehingga merupakan superset dari semua bidang dalam OpenSearch indeks Anda.
+ **Document** — Sebuah catatan dalam tabel database.
+ **Aliran data** — Data berbasis waktu yang terdiri dari beberapa indeks dukungan. Untuk informasi selengkapnya, lihat [Aliran data](https://opensearch.org/docs/latest/dashboards/im-dashboards/datastream/) dalam OpenSearch dokumentasi dan [Memulai aliran data di Panduan](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/data-streams.html#data-streams-example) *Pengembang OpenSearch Layanan Amazon*.
**catatan**  
Karena indeks aliran data dibuat dan dikelola secara internal oleh pencarian terbuka, konektor memilih pemetaan skema dari indeks pertama yang tersedia. Untuk alasan ini, kami sangat menyarankan untuk menyiapkan AWS Glue tabel sebagai sumber metadata tambahan. Untuk informasi selengkapnya, lihat [Menyiapkan database dan tabel di AWS Glue](#connectors-opensearch-setting-up-databases-and-tables-in-aws-glue). 

## Parameter
<a name="connectors-opensearch-parameters"></a>

Gunakan parameter di bagian ini untuk mengkonfigurasi OpenSearch konektor.

**catatan**  
Konektor sumber data Athena dibuat pada 3 Desember 2024 dan kemudian menggunakan koneksi. AWS Glue   
Nama parameter dan definisi yang tercantum di bawah ini adalah untuk konektor sumber data Athena yang dibuat sebelum 3 Desember 2024. Ini dapat berbeda dari [properti AWS Glue koneksi](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) yang sesuai. Mulai 3 Desember 2024, gunakan parameter di bawah ini hanya jika Anda [menggunakan konektor sumber data Athena versi sebelumnya secara manual](connect-data-source-serverless-app-repo.md).

### AWS Glue Data Catalog konektor federasi
<a name="opensearch-gc"></a>

Kami menyarankan Anda mengkonfigurasi OpenSearch konektor dengan menggunakan objek koneksi Glue. Untuk melakukan ini, atur variabel `glue_connection` lingkungan OpenSearch konektor Lambda ke nama koneksi Glue yang akan digunakan.

**Properti koneksi lem**

Gunakan perintah berikut untuk mendapatkan skema untuk objek koneksi Glue. Skema ini berisi semua parameter yang dapat Anda gunakan untuk mengontrol koneksi Anda.

```
aws glue describe-connection-type --connection-type OPENSEARCH
```

**Properti lingkungan Lambda**

Properti lingkungan Lambda berikut hanya berlaku ketika Anda menggunakan konektor dengan fungsi Lambda di akun Anda.
+  **glue\_connection** - Menentukan nama koneksi Glue yang terkait dengan konektor federasi. 

**catatan**  
Semua konektor yang menggunakan koneksi AWS Glue Data Catalog federasi harus digunakan AWS Secrets Manager untuk menyimpan kredensil.
 OpenSearch Konektor yang dibuat menggunakan koneksi AWS Glue Data Catalog federasi tidak mendukung penggunaan handler multiplexing.
 OpenSearch Konektor yang dibuat menggunakan koneksi AWS Glue Data Catalog federasi hanya mendukung `ConnectionSchemaVersion` 2.

### Konektor federasi katalog data Athena
<a name="opensearch-legacy"></a>
+ **spill\_bucket** - Menentukan bucket Amazon S3 untuk data yang melebihi batas fungsi Lambda.
+ **spill\_prefix** — (Opsional) Default ke subfolder dalam nama yang ditentukan. `spill_bucket` `athena-federation-spill` Kami menyarankan Anda mengonfigurasi [siklus hidup penyimpanan](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 di lokasi ini untuk menghapus tumpahan yang lebih lama dari jumlah hari atau jam yang telah ditentukan sebelumnya.
+ **spill\_put\_request\_headers** — (Opsional) Peta header permintaan dan nilai yang disandikan JSON untuk permintaan Amazon S3 yang digunakan untuk menumpahkan (misalnya,). `putObject` `{"x-amz-server-side-encryption" : "AES256"}` Untuk kemungkinan header lainnya, lihat [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)di *Referensi API Amazon Simple Storage Service*.
+ **kms\_key\_id** — (Opsional) Secara default, data apa pun yang tumpah ke Amazon S3 dienkripsi menggunakan mode enkripsi yang diautentikasi AES-GCM dan kunci yang dihasilkan secara acak. Agar fungsi Lambda Anda menggunakan kunci enkripsi yang lebih kuat yang dihasilkan oleh KMS seperti`a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, Anda dapat menentukan ID kunci KMS.
+ **disable\_spill\_encryption** — (Opsional) Ketika diatur ke, menonaktifkan enkripsi tumpahan. `True` Defaultnya `False` sehingga data yang tumpah ke S3 dienkripsi menggunakan AES-GCM — baik menggunakan kunci yang dihasilkan secara acak atau KMS untuk menghasilkan kunci. [Menonaktifkan enkripsi tumpahan dapat meningkatkan kinerja, terutama jika lokasi tumpahan Anda menggunakan enkripsi sisi server.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)
+ **disable\_glue** — (Opsional) Jika ada dan disetel ke true, konektor tidak mencoba mengambil metadata tambahan dari. AWS Glue
+ **query\_timeout\_cluster** — Periode batas waktu, dalam hitungan detik, untuk kueri kesehatan klaster yang digunakan dalam pembuatan pemindaian paralel.
+ **query\_timeout\_search** — Periode batas waktu, dalam hitungan detik, untuk kueri penelusuran yang digunakan dalam pengambilan dokumen dari indeks.
+ **auto\_discover\_endpoint** — Boolean. Nilai default-nya `true`. Saat Anda menggunakan OpenSearch Layanan Amazon dan menyetel parameter ini ke true, konektor dapat secara otomatis menemukan domain dan titik akhir Anda dengan memanggil operasi API deskripsi atau daftar yang sesuai di Layanan. OpenSearch Untuk jenis OpenSearch instance lainnya (misalnya, di-host sendiri), Anda harus menentukan titik akhir domain terkait dalam variabel. `domain_mapping` Jika`auto_discover_endpoint=true`, konektor menggunakan AWS kredensil untuk mengautentikasi ke Layanan. OpenSearch Jika tidak, konektor mengambil nama pengguna dan kredenal kata sandi dari variabel AWS Secrets Manager . `domain_mapping`
+ **domain\_mapping** - Digunakan hanya ketika `auto_discover_endpoint` disetel ke false dan mendefinisikan pemetaan antara nama domain dan titik akhir yang terkait. `domain_mapping`Variabel dapat mengakomodasi beberapa OpenSearch titik akhir dalam format berikut:

  ```
  domain1=endpoint1,domain2=endpoint2,domain3=endpoint3,...       
  ```

  Untuk tujuan otentikasi ke OpenSearch titik akhir, konektor mendukung string substitusi yang disuntikkan menggunakan format `${SecretName}` dengan nama pengguna dan kata sandi yang diambil dari. AWS Secrets Manager Rahasianya harus disimpan dalam format JSON berikut:

  ```
  { "username": "your_username", "password": "your_password" }
  ```

  Konektor akan secara otomatis mengurai struktur JSON ini untuk mengambil kredensialnya.
**penting**  
Sebagai praktik keamanan terbaik, jangan gunakan kredensi hardcode dalam variabel lingkungan atau string koneksi Anda. *Untuk informasi tentang memindahkan rahasia hardcode Anda AWS Secrets Manager, lihat [Memindahkan rahasia hardcode ke AWS Secrets Manager dalam Panduan](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) Pengguna.AWS Secrets Manager *

  Contoh berikut menggunakan `opensearch-creds` rahasia.

  ```
  movies=https://${opensearch-creds}:search-movies-ne...qu---us-east-1---es.amazonaws.com     
  ```

  Saat runtime, `${opensearch-creds}` dirender sebagai nama pengguna dan kata sandi, seperti pada contoh berikut.

  ```
  movies=https://myusername@mypassword:search-movies-ne...qu---us-east-1---es.amazonaws.com
  ```

  Dalam `domain_mapping` parameter, setiap pasangan domain-endpoint dapat menggunakan rahasia yang berbeda. Rahasia itu sendiri harus ditentukan dalam format {{user\_name}} @{{password}}. Meskipun kata sandi mungkin berisi `@` tanda yang disematkan, yang pertama `@` berfungsi sebagai pemisah dari{{user\_name}}.

  Penting juga untuk dicatat bahwa koma (,) dan tanda sama dengan (=) digunakan oleh konektor ini sebagai pemisah untuk pasangan domain-endpoint. Untuk alasan ini, Anda tidak boleh menggunakannya di mana pun di dalam rahasia yang disimpan.

## Menyiapkan database dan tabel di AWS Glue
<a name="connectors-opensearch-setting-up-databases-and-tables-in-aws-glue"></a>

Konektor memperoleh informasi metadata dengan menggunakan atau. AWS Glue OpenSearch Anda dapat mengatur AWS Glue tabel sebagai sumber definisi metadata tambahan. Untuk mengaktifkan fitur ini, tentukan AWS Glue database dan tabel yang cocok dengan domain dan indeks sumber yang Anda tambahkan. Konektor juga dapat memanfaatkan definisi metadata yang disimpan dalam OpenSearch instance dengan mengambil pemetaan untuk indeks yang ditentukan.

### Mendefinisikan metadata untuk array di OpenSearch
<a name="connectors-opensearch-defining-metadata-for-arrays-in-opensearch"></a>

OpenSearch tidak memiliki tipe data array khusus. Bidang apa pun dapat berisi nol atau lebih nilai asalkan memiliki tipe data yang sama. Jika ingin digunakan OpenSearch sebagai sumber definisi metadata, Anda harus menentukan `_meta` properti untuk semua indeks yang digunakan dengan Athena untuk bidang yang akan dianggap sebagai daftar atau larik. Jika Anda gagal menyelesaikan langkah ini, kueri hanya mengembalikan elemen pertama di bidang daftar. Saat Anda menentukan `_meta` properti, nama bidang harus sepenuhnya memenuhi syarat untuk struktur JSON bersarang (misalnya`address.street`, di mana `street` adalah bidang bersarang di dalam struktur). `address`

Contoh berikut mendefinisikan `actor` dan `genre` daftar dalam `movies` tabel.

```
PUT movies/_mapping 
{ 
  "_meta": { 
    "actor": "list", 
    "genre": "list" 
  } 
}
```

### Jenis Data
<a name="connectors-opensearch-data-types"></a>

 OpenSearch Konektor dapat mengekstrak definisi metadata dari salah satu AWS Glue atau instance. OpenSearch Konektor menggunakan pemetaan dalam tabel berikut untuk mengonversi definisi ke tipe data Apache Arrow, termasuk titik-titik yang dicatat di bagian berikut.


****  

| OpenSearch | Panah Apache | AWS Glue | 
| --- | --- | --- | 
| teks, kata kunci, biner | VARCHAR | string | 
| panjang | BIGINT | bigint | 
| scaled\_float | BIGINT | SCALED\_FLOAT (...) | 
| integer | INT | int | 
| pendek | SMALLINT | smallint | 
| byte | TINYINT | tinyint | 
| double | FLOAT8 | double | 
| mengapung, half\_float | FLOAT4 | float | 
| boolean | BIT | boolean | 
| tanggal, date\_nanos | DATEMILLI | timestamp | 
| Struktur JSON | STRUCT | STRUCT | 
| \_meta (untuk informasi, lihat bagian[Mendefinisikan metadata untuk array di OpenSearch](#connectors-opensearch-defining-metadata-for-arrays-in-opensearch).) | DAFTAR | ARRAY | 

#### Catatan tentang tipe data
<a name="connectors-opensearch-data-type-considerations-and-limitations"></a>
+ Saat ini, konektor hanya mendukung OpenSearch dan AWS Glue tipe data yang tercantum dalam tabel sebelumnya.
+ A `scaled_float` adalah angka floating-point yang diskalakan oleh faktor penskalaan ganda tetap dan direpresentasikan sebagai dalam Apache Arrow. `BIGINT` Misalnya, 0,756 dengan faktor penskalaan 100 dibulatkan menjadi 76.
+ Untuk menentukan `scaled_float` in AWS Glue, Anda harus memilih jenis `array` kolom dan mendeklarasikan bidang menggunakan format SCALED\_FLOAT (). {{scaling\_factor}}

  Contoh-contoh berikut ini valid:

  ```
  SCALED_FLOAT(10.51) 
  SCALED_FLOAT(100) 
  SCALED_FLOAT(100.0)
  ```

  Contoh berikut tidak valid:

  ```
  SCALED_FLOAT(10.) 
  SCALED_FLOAT(.5)
  ```
+ Saat mengonversi dari `date_nanos` ke`DATEMILLI`, nanodetik dibulatkan ke milidetik terdekat. Nilai yang valid untuk `date` dan `date_nanos` termasuk, tetapi tidak terbatas pada, format berikut:

  ```
  "2020-05-18T10:15:30.123456789" 
  "2020-05-15T06:50:01.123Z" 
  "2020-05-15T06:49:30.123-05:00" 
  1589525370001 (epoch milliseconds)
  ```
+ An OpenSearch `binary` adalah representasi string dari nilai biner yang dikodekan menggunakan `Base64` dan dikonversi ke a. `VARCHAR`

## Menjalankan kueri SQL
<a name="connectors-opensearch-running-sql-queries"></a>

Berikut ini adalah contoh query DDL yang dapat Anda gunakan dengan konektor ini. Dalam contoh, {{function\_name}} sesuai dengan nama fungsi Lambda Anda, {{domain}} adalah nama domain yang ingin Anda kueri, dan {{index}} merupakan nama indeks Anda.

```
SHOW DATABASES in `lambda:{{function_name}}`
```

```
SHOW TABLES in `lambda:{{function_name}}`.{{domain}}
```

```
DESCRIBE `lambda:{{function_name}}`.{{domain}}.{{index}}
```

## Performa
<a name="connectors-opensearch-performance"></a>

 OpenSearch Konektor Athena mendukung pemindaian paralel berbasis shard. Konektor menggunakan informasi kesehatan cluster yang diambil dari OpenSearch instance untuk menghasilkan beberapa permintaan untuk kueri penelusuran dokumen. Permintaan dibagi untuk setiap pecahan dan dijalankan secara bersamaan.

Konektor juga menekan predikat sebagai bagian dari permintaan pencarian dokumennya. Contoh query berikut dan predikat menunjukkan bagaimana konektor menggunakan predikat push down.

**Kueri**

```
SELECT * FROM "lambda:elasticsearch".movies.movies 
WHERE year >= 1955 AND year <= 1962 OR year = 1996
```

**Predikat**

```
(_exists_:year) AND year:([1955 TO 1962] OR 1996)
```

## Kueri passthrough
<a name="connectors-opensearch-passthrough-queries"></a>

 OpenSearch Konektor mendukung [kueri passthrough](federated-query-passthrough.md) dan menggunakan bahasa Query DSL. Untuk informasi selengkapnya tentang kueri dengan Query DSL, lihat [Kueri DSL](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html) di dokumentasi Elasticsearch atau [Query](https://opensearch.org/docs/latest/query-dsl/) DSL dalam dokumentasi. OpenSearch 

Untuk menggunakan kueri passthrough dengan OpenSearch konektor, gunakan sintaks berikut:

```
SELECT * FROM TABLE(
        system.query(
            schema => '{{schema_name}}',
            index => '{{index_name}}',
            query => "{{{query_string}}}"
        ))
```

 OpenSearch Contoh filter kueri passthrough berikut untuk karyawan dengan status pekerjaan aktif dalam `employee` indeks `default` skema.

```
SELECT * FROM TABLE(
        system.query(
            schema => 'default',
            index => 'employee',
            query => "{ ''bool'':{''filter'':{''term'':{''status'': ''active''}}}}"
        ))
```

## Sumber daya tambahan
<a name="connectors-opensearch-additional-resources"></a>
+ *Untuk artikel tentang penggunaan OpenSearch konektor Amazon Athena untuk menanyakan data di OpenSearch Layanan Amazon dan Amazon S3 dalam satu kueri, [lihat Kueri data di Layanan Amazon menggunakan SQL dari OpenSearch Amazon Athena](https://aws.amazon.com/blogs/big-data/query-data-in-amazon-opensearch-service-using-sql-from-amazon-athena/) di Blog Big Data.AWS *
+ Untuk informasi tambahan tentang konektor ini, kunjungi [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-elasticsearch) GitHub di.com.