Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Pencarian lintas-cluster di Layanan Amazon OpenSearch
Pencarian lintas klaster di Amazon OpenSearch Service memungkinkan Anda melakukan kueri dan agregasi di beberapa domain yang terhubung. Seringkali lebih masuk akal untuk menggunakan beberapa domain yang lebih kecil dan bukannya satu domain besar, terutama ketika Anda menjalankan berbagai jenis beban kerja.
Domain khusus beban kerja memungkinkan Anda untuk melakukan tugas berikut:
-
Optimalkan setiap domain dengan memilih tipe instans untuk beban kerja tertentu.
-
Menetapkan batas-batas kesalahan-isolasi di seluruh beban kerja. Ini berarti bahwa jika salah satu beban kerja Anda gagal, kesalahan yang terkandung dalam domain tertentu dan tidak mempengaruhi beban kerja Anda yang lain.
-
Skala lebih mudah di seluruh domain.
Pencarian lintas cluster mendukung OpenSearch Dasbor, sehingga Anda dapat membuat visualisasi dan dasbor di semua domain Anda. Anda membayar biaya transfer AWS data standar
catatan
Open source OpenSearch juga memiliki dokumentasi
Topik
Batasan
Pencarian lintas klaster memiliki beberapa keterbatasan penting:
-
Anda tidak dapat menghubungkan domain Elasticsearch ke domain. OpenSearch
-
Anda tidak dapat terhubung ke klaster OpenSearch /Elasticsearch yang dikelola sendiri.
-
Untuk menghubungkan domain di seluruh Wilayah, kedua domain harus berada di Elasticsearch 7.10 atau yang lebih baru atau. OpenSearch
-
Sebuah domain dapat memiliki maksimum 20 koneksi keluar. Demikian pula, domain dapat memiliki maksimum 20 koneksi masuk. Dengan kata lain, satu domain dapat terhubung ke maksimum 20 domain lainnya.
-
Domain sumber harus pada versi yang sama atau lebih tinggi dari domain tujuan. Jika Anda mengatur koneksi dua arah antara dua domain dan Anda ingin memutakhirkan satu atau keduanya, Anda harus terlebih dahulu menghapus salah satu koneksi.
-
Anda tidak dapat menggunakan kamus kustom atau SQL dengan pencarian lintas-klaster.
-
Anda tidak dapat menggunakan AWS CloudFormation untuk menghubungkan domain.
-
Anda tidak dapat menggunakan pencarian lintas klaster pada instance M3 atau burstable (T2 dan T3).
Prasyarat pencarian lintas klaster
Sebelum Anda mengatur pencarian lintas-klaster, pastikan bahwa domain Anda memenuhi persyaratan berikut:
-
Dua OpenSearch domain, atau domain Elasticsearch pada versi 6.7 atau yang lebih baru
-
Kontrol akses detail diaktifkan
-
ode-to-node Enkripsi N diaktifkan
Penentuan harga pencarian lintas klaster
Tidak ada biaya tambahan untuk mencari di seluruh domain.
Menyiapkan koneksi
Domain “sumber” mengacu pada domain yang berasal dari permintaan pencarian lintas klaster dari . Dengan kata lain, domain sumber adalah domain tempat Anda mengirim permintaan pencarian awal.
Domain "tujuan" adalah domain yang ditanyakan oleh domain sumber.
Koneksi lintas klaster searah dari sumber ke domain tujuan. Ini berarti bahwa domain tujuan tidak dapat membuat kueri domain sumber. Namun, Anda dapat mengatur koneksi lain ke arah yang berlawanan.
Sumber domain membuat koneksi “keluar” ke domain tujuan. Domain tujuan menerima permintaan koneksi “masuk” dari domain sumber.
Untuk mengatur koneksi
-
Di dasbor domain Anda, pilih domain dan buka tab Koneksi.
-
Di bagian Koneksi keluar, pilih Permintaan.
-
Untuk alias Koneksi, masukkan nama untuk koneksi Anda.
-
Pilih antara menghubungkan ke domain di wilayah Anda Akun AWS atau di akun atau Wilayah lain.
-
Untuk terhubung ke cluster di Region Akun AWS dan Anda, pilih domain dari menu dropdown dan pilih Request.
-
Untuk terhubung ke cluster di wilayah lain Akun AWS atau, pilih ARN dari domain jarak jauh dan pilih Permintaan. Untuk menghubungkan domain di seluruh Wilayah, kedua domain harus menjalankan Elasticsearch versi 7.10 atau yang lebih baru atau. OpenSearch
-
-
Untuk melewati klaster yang tidak tersedia untuk kueri klaster, pilih Lewati tidak tersedia. Pengaturan ini memastikan bahwa kueri lintas klaster Anda mengembalikan sebagian hasil meskipun gagal pada satu atau beberapa klaster jarak jauh.
-
Pencarian lintas-cluster pertama memvalidasi permintaan koneksi untuk memastikan prasyarat terpenuhi. Jika domain ditemukan tidak kompatibel, permintaan koneksi memasuki status.
Validation failed
-
Setelah permintaan koneksi berhasil divalidasi, lalu dikirim ke domain tujuan, di mana perlu disetujui. Sampai persetujuan ini terjadi, koneksi tetap dalam
Pending acceptance
keadaan. Ketika permintaan koneksi diterima di domain tujuan, status berubahActive
dan domain tujuan menjadi tersedia untuk kueri.-
Halaman domain menunjukkan kesehatan domain secara keseluruhan dan detail kesehatan instans domain tujuan Anda. Hanya pemilik domain yang memiliki fleksibilitas untuk membuat, melihat, menghapus, dan memantau koneksi ke atau dari domain mereka.
-
Setelah koneksi dibuat, lalu lintas yang mengalir di antara simpul dari domain yang terhubung dienkripsi. Jika Anda menghubungkan domain VPC ke domain non-VPC dan domain non-VPC adalah titik akhir publik yang dapat menerima lalu lintas dari internet, lalu lintas antar klaster antara domain masih dienkripsi dan aman.
Menghapus koneksi
Menghapus koneksi menghentikan operasi lintas-cluster pada indeksnya.
-
Di dasbor domain Anda, buka tab Koneksi.
-
Pilih koneksi domain yang ingin Anda hapus dan pilih Hapus, lalu konfirmasikan penghapusan.
Anda dapat melakukan langkah-langkah ini pada domain sumber atau tujuan untuk menghapus koneksi. Setelah Anda menghapus koneksi, itu masih terlihat dengan Deleted
status untuk jangka waktu 15 hari.
Anda tidak dapat menghapus domain dengan koneksi lintas klaster yang aktif. Untuk menghapus domain, pertama-tama hapus semua koneksi masuk dan keluar dari domain tersebut. Ini memastikan Anda memperhitungkan pengguna domain lintas cluster sebelum menghapus domain.
Menyiapkan keamanan dan sampel panduan
-
Anda mengirim permintaan pencarian lintas klaster untuk domain sumber.
-
Domain sumber mengevaluasi permintaan tersebut terhadap kebijakan akses domainnya. Karena pencarian lintas klaster memerlukan kontrol akses detail, kami merekomendasikan kebijakan akses terbuka pada domain sumber.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "*" ] }, "Action": [ "es:ESHttp*" ], "Resource": "arn:aws:es:region:account:domain/src-domain/*" } ] }
catatan
Jika Anda menyertakan indeks jarak jauh di jalur, Anda harus mengkodekan URL URI di domain ARN. Misalnya, gunakan
arn:aws:es:us-east-1:123456789012:domain/my-domain/local_index,dst%3Aremote_index
bukanarn:aws:es:us-east-1:123456789012:domain/my-domain/local_index,dst:remote_index
.Jika Anda memilih untuk menggunakan kebijakan akses terbatas selain kontrol akses detail, minimal kebijakan Anda harus mengizinkan akses ke
es:ESHttpGet
.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::123456789012:user/test-user" ] }, "Action": "es:ESHttpGet", "Resource": "arn:aws:es:region:account:domain/src-domain/*" } ] }
-
Kontrol akses detail pada domain sumber mengevaluasi permintaan:
-
Apakah permintaan ditandatangani dengan kredensial dasar IAM atau HTTP yang valid?
-
Jika demikian, apakah pengguna memiliki izin untuk melakukan pencarian dan mengakses data?
Jika permintaan hanya mencari data pada domain tujuan (misalnya,
dest-alias:dest-index/_search
), Anda hanya memerlukan izin pada domain tujuan.Jika permintaan mencari data di kedua domain (misalnya,
source-index,dest-alias:dest-index/_search
), Anda memerlukan izin pada kedua domain.Dalam kontrol akses berbutir halus, pengguna harus memiliki
indices:admin/shards/search_shards
izin selain standarread
atausearch
izin untuk indeks yang relevan. -
-
Sumber domain melewati permintaan ke domain tujuan. Domain tujuan mengevaluasi permintaan ini terhadap kebijakan akses domainnya. Anda harus menyertakan izin
es:ESCrossClusterGet
pada domain tujuan:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:ESCrossClusterGet", "Resource": "arn:aws:es:region:account:domain/dst-domain" } ] }
Pastikan bahwa izin
es:ESCrossClusterGet
diterapkan untuk/dst-domain
dan bukan/dst-domain/*
.Namun, kebijakan minimum ini hanya memungkinkan pencarian lintas klaster. Untuk melakukan operasi lain, seperti mengindeks dokumen dan melakukan pencarian standar, Anda memerlukan izin tambahan. Kami merekomendasikan kebijakan berikut pada domain tujuan:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "*" ] }, "Action": [ "es:ESHttp*" ], "Resource": "arn:aws:es:region:account:domain/dst-domain/*" }, { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:ESCrossClusterGet", "Resource": "arn:aws:es:region:account:domain/dst-domain" } ] }
catatan
Semua permintaan pencarian lintas cluster antar domain dienkripsi dalam perjalanan secara default sebagai bagian dari enkripsi. node-to-node
-
Domain tujuan melakukan pencarian dan mengembalikan hasil ke domain sumber.
-
Sumber domain menggabungkan hasil sendiri (jika ada) dengan hasil dari domain tujuan dan mengembalikannya kepada Anda.
-
Kami merekomendasikan Postman
untuk permintaan pengujian: -
Pada domain tujuan, indeks dokumen:
POST https://dst-domain.us-east-1.es.amazonaws.com/books/_doc/1 { "Dracula": "Bram Stoker" }
-
Untuk melakukan kueri indeks ini dari domain sumber, sertakan alias koneksi domain tujuan dalam kueri.
GET https://src-domain.us-east-1.es.amazonaws.com/<connection_alias>:books/_search { ... "hits": [ { "_index": "source-destination:books", "_type": "_doc", "_id": "1", "_score": 1, "_source": { "Dracula": "Bram Stoker" } } ] }
Anda dapat menemukan alias koneksi di tab Connections di dasbor domain Anda.
-
Jika Anda mengatur koneksi antara
domain-a -> domain-b
dengan aliascluster_b
dandomain-a -> domain-c
dengan alias koneksicluster_c
, pencariandomain-a
,domain-b
, dandomain-c
sebagai berikut:GET https://src-domain.us-east-1.es.amazonaws.com/local_index,cluster_b:b_index,cluster_c:c_index/_search { "query": { "match": { "user": "domino" } } }
Respons
{ "took": 150, "timed_out": false, "_shards": { "total": 3, "successful": 3, "failed": 0, "skipped": 0 }, "_clusters": { "total": 3, "successful": 3, "skipped": 0 }, "hits": { "total": 3, "max_score": 1, "hits": [ { "_index": "local_index", "_type": "_doc", "_id": "0", "_score": 1, "_source": { "user": "domino", "message": "Lets unite the new mutants", "likes": 0 } }, { "_index": "cluster_b:b_index", "_type": "_doc", "_id": "0", "_score": 2, "_source": { "user": "domino", "message": "I'm different", "likes": 0 } }, { "_index": "cluster_c:c_index", "_type": "_doc", "_id": "0", "_score": 3, "_source": { "user": "domino", "message": "So am I", "likes": 0 } } ] } }
Jika Anda tidak memilih untuk melewati kluster yang tidak tersedia dalam pengaturan koneksi, semua kluster tujuan yang Anda cari harus tersedia agar permintaan pencarian Anda berjalan dengan sukses. Jika tidak, seluruh permintaan gagal—bahkan jika salah satu domain tidak tersedia, tidak ada hasil pencarian yang dikembalikan.
-
OpenSearch Dasbor
Anda dapat memvisualisasikan data dari beberapa domain yang terhubung dengan cara yang sama seperti dari satu domain, kecuali bahwa Anda harus mengakses indeks jarak jauh menggunakan. connection-alias:index
Jadi, pola indeks Anda harus cocok dengan connection-alias:index
.