Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Konektor Amazon Athena OpenSearch
OpenSearch Layanan
OpenSearch Konektor Amazon Athena memungkinkan Amazon Athena berkomunikasi dengan instans OpenSearch Anda sehingga Anda dapat menggunakan SQL untuk menanyakan data Anda. OpenSearch
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 di harus memiliki akses baca di AWS Serverless Application Repository Lake Formation ke. AWS Glue Data Catalog
Prasyarat
Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat Menyebarkan konektor sumber data atau MenggunakanAWS Serverless Application Repositoryuntuk menyebarkan konektor sumber data.
Ketentuan
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
dalam OpenSearch dokumentasi dan Memulai aliran data di Panduan 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.
Parameter
Gunakan variabel lingkungan Lambda di bagian ini untuk mengonfigurasi konektor. OpenSearch
-
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 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 PutObjectdi 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
DefaultnyaFalse
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. -
disable_glue — (Opsional) Jika ada dan disetel ke true, konektor tidak mencoba untuk 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
Jikaauto_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 Titik dua (:) di akhir ekspresi berfungsi sebagai pemisah dari sisa titik akhir.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 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
Meskipun kata sandi mungkin berisiuser_name @ password
.@
tanda yang disematkan, yang pertama@
berfungsi sebagai pemisah dariuser_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
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
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 (misalnyaaddress.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
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 bagianMendefinisikan metadata untuk array di OpenSearch.) | DAFTAR | ARRAY |
Catatan tentang tipe data
-
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 jenisarray
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
keDATEMILLI
, nanodetik dibulatkan ke milidetik terdekat. Nilai yang valid untukdate
dandate_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 menggunakanBase64
dan dikonversi ke a.VARCHAR
Menjalankan kueri SQL
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 indeks adalah nama indeks
Anda.
SHOW DATABASES in `lambda:
function_name
`
SHOW TABLES in `lambda:
function_name
`.domain
DESCRIBE `lambda:
function_name
`.domain
.index
Kinerja
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
OpenSearch Konektor mendukung kueri passthrough dan menggunakan bahasa Query DSL. Untuk informasi selengkapnya tentang kueri dengan Query DSL, lihat Kueri DSL
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
-
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
di Blog Big Data.AWS Untuk informasi tambahan tentang konektor ini, kunjungi situs terkait
GitHub di.com.