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 Anda memulai, selesaikan hal-hal berikut:
- Instal AlloyDB Omni menggunakan container.
- Deploy dan konfigurasi 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, konfigurasi akses ke cluster OpenSearch Anda melalui server data eksternal.
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 menghadap 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 merepresentasikan 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
AlloyDB Omni mengonversi kueri SQL menjadi kueri OpenSearch REST API.
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 merepresentasikan 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 Bahasa Khusus Domain (DSL) kueri gaya 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 merepresentasikan tabel OpenSearch Anda. Contoh, my-fd-opensearch-table.
Penelusuran hybrid
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 keseluruhan Reciprocal Rank Fusion (RRF). Contoh,0.5. Jika Anda tidak memberikan bobot, bobot akan didistribusikan secara merata. Untuk mengetahui informasi selengkapnya, lihat Parameter fungsi penelusuran hibrida.OPENSEARCH_FD_TABLE: nama tabel data asing yang merepresentasikan 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 membuat kueri 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 mengindeks data database Anda secara otomatis 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.