Anda dapat mengakses dan menelusuri data yang disimpan di OpenSearch menggunakan integrasi penelusuran eksternal di AlloyDB Omni. Integrasi ini memungkinkan Anda melakukan penelusuran gabungan di seluruh indeks OpenSearch yang ada dan tabel relasional Anda tanpa menyalin atau memindahkan data.
Sebelum memulai
Sebelum memulai, selesaikan hal-hal berikut:
- Menginstal AlloyDB Omni menggunakan container.
- Men-deploy dan mengonfigurasi OpenSearch dengan endpoint publik yang dapat diakses.
- Aktifkan plugin keamanan di cluster OpenSearch Anda dan buat pengguna hanya baca di database pengguna internal. AlloyDB Omni menggunakan kredensial ini untuk mengakses cluster OpenSearch Anda.
Menyimpan kredensial OpenSearch di Secret Manager
AlloyDB Omni menyimpan dan membaca kredensial OpenSearch Anda dari Secret Manager. Untuk autentikasi HTTP Dasar, nilai secret di Secret Manager harus berupa string yang diformat sebagai username:password. Untuk mengetahui informasi selengkapnya tentang cara menggunakan
Secret Manager, lihat
Membuat dan mengakses secret menggunakan Secret Manager.
Pastikan akun layanan yang digunakan AlloyDB Omni memiliki izin secretmanager.secretAccessor untuk membaca secret dari Secret Manager. Untuk mengetahui informasi selengkapnya, lihat
Mengelola akses ke secret.
Mengaktifkan dan mengonfigurasi ekstensi external_search_fdw
Untuk memulai integrasi dengan OpenSearch, konfigurasikan akses ke cluster OpenSearch Anda melalui server data asing.
Hubungkan ke database Anda dan aktifkan ekstensi:
CREATE EXTENSION external_search_fdw;Buat server asing:
CREATE SERVER OPENSEARCH_SERVER_NAME FOREIGN DATA WRAPPER external_search_fdw OPTIONS ( server 'OPENSEARCH_SERVER_HOST_PORT', search_provider 'opensearch', auth_mode 'secret_manager', auth_method 'AUTH_METHOD', secret_path 'SECRET_PATH' );Ganti variabel berikut:
OPENSEARCH_SERVER_NAME: nama untuk server data asing Anda. Contoh,opensearch.OPENSEARCH_SERVER_HOST_PORT: URL yang ditampilkan secara publik untuk cluster OpenSearch Anda. Contoh,https://search-my-domain.us-east-1.es.amazonaws.com:443.AUTH_METHOD: jenis autentikasi yang akan digunakan. Contoh,Basic.SECRET_PATH: Jalur Secret Manager ke kredensial autentikasi OpenSearch Anda. Contoh,projects/PROJECT_ID/secrets/opensearch-credentials/versions/1.
Tentukan pemetaan pengguna untuk server OpenSearch:
CREATE USER MAPPING FOR CURRENT_USER SERVER OPENSEARCH_SERVER_NAME;Petakan skema indeks OpenSearch Anda ke tabel asing PostgreSQL:
CREATE FOREIGN TABLE OPENSEARCH_FD_TABLE( metadata external_search_fdw_schema.OpaqueMetadata, OPENSEARCH_FIELDS) SERVER OPENSEARCH_SERVER_NAME OPTIONS( remote_table_name 'OPENSEARCH_INDEX_NAME' );Ganti variabel berikut:
OPENSEARCH_FD_TABLE: nama tabel data asing yang mewakili tabel OpenSearch Anda. Contoh,my-fd-opensearch-table.OPENSEARCH_FIELDS: daftar yang dipisahkan koma dengan setiap entri mengikuti formatopensearch_field_name PG_DATA_TYPE. Untuk mengetahui daftar jenis data OpenSearch yang didukung dan jenis PostgreSQL yang sesuai, lihat Jenis data yang didukung.OPENSEARCH_INDEX_NAME: nama indeks OpenSearch Anda. Contoh,my-opensearch-index.
Membuat kueri data OpenSearch Anda
AlloyDB Omni mengonversi kueri SQL menjadi kueri REST API OpenSearch.
Kueri SQL standar
Anda dapat menggunakan SQL standar dengan sintaksis Lucene untuk ekspresi penelusuran.
SELECT id, body
FROM OPENSEARCH_FD_TABLE
WHERE FILTER
ORDER BY metadata <@> 'QUERY';
Ganti variabel berikut:
OPENSEARCH_FD_TABLE: nama tabel data asing yang mewakili tabel OpenSearch Anda. Contoh,my-fd-opensearch-table.FILTER: (Opsional) filter yang akan diterapkan ke kueri OpenSearch Anda. Contoh,a = 10 AND b < 105.QUERY: kueri yang akan dikirim ke OpenSearch. Contoh,body:database.
DSL Kueri
Untuk kasus penggunaan lanjutan, gunakan Query Domain Specific Language (DSL) bergaya JSON OpenSearch.
SELECT id, title
FROM OPENSEARCH_FD_TABLE
ORDER BY metadata <@> $${
"query": {
"bool": {
"must": { "match": { "title": "opensearch" } },
"filter": { "term": { "category": "software" } }
}
},
"sort": [
{ "price": { "order": "desc" } }
]
}$$
LIMIT 1;
Ganti OPENSEARCH_FD_TABLE dengan nama tabel data asing yang mewakili tabel OpenSearch Anda. Contoh, my-fd-opensearch-table.
Penelusuran campuran
Untuk melakukan penelusuran campuran pada data OpenSearch, gabungkan hasil penelusuran token OpenSearch dengan hasil penelusuran vektor AlloyDB Omni.
SELECT *
FROM ai.hybrid_search(
ARRAY[
'{"limit": LIMIT,
"weight": WEIGHT,
"table_name": "OPENSEARCH_FD_TABLE",
"key_column": "id",
"query_text_input": "QUERY"}'::jsonb
])
ORDER BY score DESC;
Ganti variabel berikut:
LIMIT: jumlah hasil yang akan ditampilkan. Contoh,10.WEIGHT: kontribusi entri penelusuran ini terhadap Reciprocal Rank Fusion (RRF) secara keseluruhan. Contoh,0.5. Jika Anda tidak memberikan bobot, bobot akan didistribusikan secara merata. Untuk mengetahui informasi selengkapnya, lihat Parameter fungsi penelusuran hybrid.OPENSEARCH_FD_TABLE: nama tabel data asing yang mewakili tabel OpenSearch Anda. Contoh,my-fd-opensearch-table.QUERY: kueri yang akan dikirim ke OpenSearch. Contoh,body:database.
Pemecahan masalah
Jika Anda mengalami masalah autentikasi atau konektivitas saat mengkueri cluster OpenSearch, periksa hal berikut:
Error autentikasi HTTP 401 atau 403: pastikan secret OpenSearch Anda di Secret Manager berisi string yang diformat sebagai
username:passworddan akun layanan Anda memiliki izinsecretmanager.secretAccessor.Waktu tunggu koneksi habis: verifikasi aturan jaringan dan konfigurasi firewall antara AlloyDB Omni dan endpoint OpenSearch Anda.
Batasan
Hanya baca: AlloyDB Omni membaca, tetapi tidak menulis ke, data OpenSearch.
Pengelolaan data: AlloyDB Omni tidak otomatis mengindeks data database Anda ke OpenSearch. Anda bertanggung jawab untuk mengisi indeks OpenSearch dan menjaga konsistensi antara data di AlloyDB Omni dan data yang diindeks di OpenSearch.
Pengelolaan skema: AlloyDB Omni tidak otomatis menyinkronkan skema dengan OpenSearch. Jika skema indeks OpenSearch Anda berubah, perbarui skema tabel asing PostgreSQL yang sesuai secara manual.
Jenis yang tidak didukung: jenis OpenSearch khusus, seperti jenis geospasial, tidak didukung.
Autentikasi: Anda harus menggunakan autentikasi Dasar (nama pengguna dan sandi) yang dikonfigurasi di cluster OpenSearch Anda.
Langkah berikutnya
Pelajari cara Mengakses data Elasticsearch.
Pelajari cara Mengakses data Solr.
Pelajari cara Menjalankan penelusuran kemiripan vektor campuran.