Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mencari data di Amazon OpenSearch Service
Ada beberapa metode umum untuk mencari dokumen di Amazon OpenSearch Service, termasuk URI pencarian dan pencarian badan permintaan. OpenSearch Layanan menawarkan fungsionalitas tambahan yang meningkatkan pengalaman pencarian, seperti paket khusus, SQL dukungan, dan pencarian asinkron. Untuk API referensi OpenSearch pencarian yang komprehensif, lihat OpenSearch dokumentasi
catatan
Permintaan sampel berikut bekerja dengan OpenSearch APIs. Beberapa permintaan mungkin tidak berfungsi dengan versi Elasticsearch yang lebih lama.
Topik
- URIpencarian
- Pencarian isi permintaan
- Pemberian nomor halaman hasil pencarian
- Bahasa Kueri Dasbor
- Paket kustom untuk Amazon OpenSearch Service
- Menanyakan data OpenSearch Layanan Amazon Anda dengan SQL
- Pencarian K-Nearest Neighbor (K-nN) di Layanan Amazon OpenSearch
- Pencarian lintas-cluster di Layanan Amazon OpenSearch
- Belajar Peringkat untuk OpenSearch Layanan Amazon
- Pencarian asinkron di Layanan Amazon OpenSearch
- Cari titik waktu di OpenSearch Layanan Amazon
- Pencarian semantik di Layanan Amazon OpenSearch
- Pencarian segmen bersamaan di Amazon Service OpenSearch
- Pembuatan kueri bahasa alami dengan OpenSearch
URIpencarian
Pencarian Universal Resource Identifier (URI) adalah bentuk pencarian yang paling sederhana. Dalam URI pencarian, Anda menentukan kueri sebagai parameter HTTP permintaan:
GET https://search-
my-domain
.us-west-1.
es.amazonaws.com/_search?q=house
Respons sampel mungkin terlihat seperti berikut ini:
{
"took": 25,
"timed_out": false,
"_shards": {
"total": 10,
"successful": 10,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 85,
"relation": "eq",
},
"max_score": 6.6137657,
"hits": [
{
"_index": "movies",
"_type": "movie",
"_id": "tt0077975",
"_score": 6.6137657,
"_source": {
"directors": [
"John Landis"
],
"release_date": "1978-07-27T00:00:00Z",
"rating": 7.5,
"genres": [
"Comedy",
"Romance"
],
"image_url": "http://ia.media-imdb.com/images/M/MV5BMTY2OTQxNTc1OF5BMl5BanBnXkFtZTYwNjA3NjI5._V1_SX400_.jpg",
"plot": "At a 1962 College, Dean Vernon Wormer is determined to expel the entire Delta Tau Chi Fraternity, but those troublemakers have other plans for him.",
"title": "Animal House",
"rank": 527,
"running_time_secs": 6540,
"actors": [
"John Belushi",
"Karen Allen",
"Tom Hulce"
],
"year": 1978,
"id": "tt0077975"
}
},
...
]
}
}
Secara default, kueri ini mencari semua bidang dari semua indeks untuk istilah rumah. Untuk mempersempit pencarian, tentukan indeks (movies
) dan bidang dokumen (title
) diURI:
GET https://search-
my-domain
.us-west-1.
es.amazonaws.com/movies/_search?q=title:house
Anda dapat memasukkan parameter tambahan dalam permintaan, tetapi parameter yang didukung hanya menyediakan sebagian kecil dari opsi OpenSearch pencarian. Permintaan berikut mengembalikan 20 hasil (bukan defaultnya yang 10) dan mengurutkan menurut tahun (dibandingkan dengan _score
):
GET https://search-
my-domain
.us-west-1.
es.amazonaws.com/movies/_search?q=title:house&size=20&sort=year:desc
Pencarian isi permintaan
Untuk melakukan pencarian yang lebih kompleks, gunakan isi HTTP permintaan dan bahasa OpenSearch khusus domain () DSL untuk kueri. Kueri DSL memungkinkan Anda menentukan berbagai opsi OpenSearch pencarian.
catatan
Anda tidak dapat menyertakan karakter khusus Unicode dalam nilai bidang teks, atau nilainya akan diuraikan sebagai beberapa nilai yang dipisahkan oleh karakter khusus. Penguraian yang salah ini dapat menyebabkan penyaringan dokumen yang tidak disengaja dan berpotensi membahayakan kontrol atas aksesnya. Untuk informasi selengkapnya, lihat Catatan tentang karakter khusus Unicode di bidang teks
match
Kueri berikut mirip dengan contoh URIpencarian akhir:
POST https://search-
my-domain
.us-west-1.
es.amazonaws.com/movies/_search { "size": 20, "sort": { "year": { "order": "desc" } }, "query": { "query_string": { "default_field": "title", "query": "house" } } }
catatan
_search
APIMenerima HTTP GET
dan POST
untuk pencarian badan permintaan, tetapi tidak semua HTTP klien mendukung penambahan badan permintaan ke permintaan. GET
POST
adalah pilihan yang lebih universal.
Dalam banyak kasus, Anda mungkin ingin mencari beberapa bidang, tetapi tidak semua bidang. Gunakan kueri multi_match
:
POST https://search-
my-domain
.us-west-1.
es.amazonaws.com/movies/_search { "size": 20, "query": { "multi_match": { "query": "house", "fields": ["title", "plot", "actors", "directors"] } } }
Bidang pendorong
Anda dapat meningkatkan relevansi pencarian dengan “meningkatkan” bidang tertentu. Boost adalah pengganda yang menimbang kecocokan dalam satu bidang lebih berat daripada kecocokan di bidang lain. Pada contoh berikut, kecocokan untuk john di bidang pengaruh title
_score
dua kali lebih banyak dari kecocokan di bidang plot
dan empat kali lebih banyak kecocokan di bidang actors
atau directors
. Hasilnya adalah bahwa film seperti John Wick dan John Carter berada di dekat puncak hasil pencarian, dan film yang dibintangi John Travolta berada di dekat bagian bawah.
POST https://search-
my-domain
.us-west-1.
es.amazonaws.com/movies/_search { "size": 20, "query": { "multi_match": { "query": "john", "fields": ["title^4", "plot^2", "actors", "directors"] } } }
Penyorotan hasil pencarian
highlight
Opsi memberitahu OpenSearch untuk mengembalikan objek tambahan di dalam hits
array jika query cocok dengan satu atau beberapa bidang:
POST https://search-
my-domain
.us-west-1.
es.amazonaws.com/movies/_search { "size": 20, "query": { "multi_match": { "query": "house", "fields": ["title^4", "plot^2", "actors", "directors"] } }, "highlight": { "fields": { "plot": {} } } }
Jika kueri cocok dengan isi bidang plot
, temuan mungkin terlihat seperti berikut ini:
{
"_index": "movies",
"_type": "movie",
"_id": "tt0091541",
"_score": 11.276199,
"_source": {
"directors": [
"Richard Benjamin"
],
"release_date": "1986-03-26T00:00:00Z",
"rating": 6,
"genres": [
"Comedy",
"Music"
],
"image_url": "http://ia.media-imdb.com/images/M/MV5BMTIzODEzODE2OF5BMl5BanBnXkFtZTcwNjQ3ODcyMQ@@._V1_SX400_.jpg",
"plot": "A young couple struggles to repair a hopelessly dilapidated house.",
"title": "The Money Pit",
"rank": 4095,
"running_time_secs": 5460,
"actors": [
"Tom Hanks",
"Shelley Long",
"Alexander Godunov"
],
"year": 1986,
"id": "tt0091541"
},
"highlight": {
"plot": [
"A young couple struggles to repair a hopelessly dilapidated <em>house</em>."
]
}
}
Secara default, OpenSearch membungkus string yang cocok dalam <em>
tag, menyediakan hingga 100 karakter konteks di sekitar pertandingan, dan memecah konten menjadi kalimat dengan mengidentifikasi tanda baca, spasi, tab, dan jeda baris. Semua pengaturan ini dapat disesuaikan:
POST https://search-
my-domain
.us-west-1.
es.amazonaws.com/movies/_search { "size": 20, "query": { "multi_match": { "query": "house", "fields": ["title^4", "plot^2", "actors", "directors"] } }, "highlight": { "fields": { "plot": {} }, "pre_tags": "<strong>", "post_tags": "</strong>", "fragment_size": 200, "boundary_chars": ".,!? " } }
Hitung API
Jika Anda tidak tertarik dengan isi dokumen Anda dan hanya ingin mengetahui jumlah kecocokan, Anda dapat menggunakan _count
API alih-alih _search
API. Permintaan berikut menggunakan kueri query_string
untuk mengidentifikasi komedi romantis:
POST https://search-
my-domain
.us-west-1.
es.amazonaws.com/movies/_count { "query": { "query_string": { "default_field": "genres", "query": "romance AND comedy" } } }
Respons sampel mungkin terlihat seperti berikut ini:
{
"count": 564,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
}
}
Pemberian nomor halaman hasil pencarian
Jika Anda perlu menampilkan sejumlah besar hasil pencarian, Anda dapat menerapkan pagination menggunakan beberapa metode berbeda.
Titik waktu
Fitur point in time (PIT) adalah jenis pencarian yang memungkinkan Anda menjalankan kueri berbeda terhadap kumpulan data yang diperbaiki tepat waktu. Ini adalah metode pagination yang disukai OpenSearch, terutama untuk penomoran halaman yang dalam. Anda dapat menggunakan PIT OpenSearch Layanan versi 2.5 dan yang lebih baru. Untuk informasi selengkapnya tentang PIT, lihat Cari titik waktu di OpenSearch Layanan Amazon.
from
Dan size
parameter
Cara termudah untuk membuat halaman adalah dengan size
parameter from
dan. Permintaan berikut mengembalikan hasil 20—39 dari daftar hasil pencarian yang diindeks nol:
POST https://search-
my-domain
.us-west-1.
es.amazonaws.com/movies/_search { "from": 20, "size": 20, "query": { "multi_match": { "query": "house", "fields": ["title^4", "plot^2", "actors", "directors"] } } }
Untuk informasi selengkapnya tentang pagination penelusuran, lihat hasil Paginate
Bahasa Kueri Dasbor
Anda dapat menggunakan Dashboards Query Language (DQL)
Permintaan persyaratan
Kueri istilah mengharuskan Anda menentukan istilah yang Anda cari.
Untuk melakukan kueri istilah, masukkan yang berikut ini:
host:www.example.com
Kueri Boolean
Anda dapat menggunakan operator BooleanAND
,or
, dan not
untuk menggabungkan beberapa query.
Untuk melakukan kueri Boolean, tempel berikut ini:
host.keyword:www.example.com and response.keyword:200
Kueri tanggal dan rentang
Anda dapat menggunakan kueri tanggal dan rentang untuk menemukan tanggal sebelum atau sesudah kueri Anda.
-
>
menunjukkan pencarian untuk tanggal setelah tanggal yang Anda tentukan. -
<
menunjukkan pencarian untuk tanggal sebelum tanggal yang Anda tentukan.
@timestamp > "2020-12-14T09:35:33"
Kueri bidang bersarang
Jika Anda memiliki dokumen dengan bidang bersarang, Anda harus menentukan bagian mana dari dokumen yang ingin Anda ambil. Berikut ini adalah contoh dokumen yang berisi bidang bersarang:
{"NBA players":[ {"player-name": "Lebron James", "player-position": "Power forward", "points-per-game": "30.3" }, {"player-name": "Kevin Durant", "player-position": "Power forward", "points-per-game": "27.1" }, {"player-name": "Anthony Davis", "player-position": "Power forward", "points-per-game": "23.2" }, {"player-name": "Giannis Antetokounmpo", "player-position": "Power forward", "points-per-game":"29.9" } ] }
Untuk mengambil bidang tertentu menggunakanDQL, tempel yang berikut ini:
NBA players: {player-name: Lebron James}
Untuk mengambil beberapa objek dari dokumen bersarang, tempel yang berikut ini:
NBA players: {player-name: Lebron James} and NBA players: {player-name: Giannis Antetokounmpo}
Untuk mencari dalam rentang, tempel yang berikut ini:
NBA players: {player-name: Lebron James} and NBA players: {player-name: Giannis Antetokounmpo and < 30}
Jika dokumen Anda memiliki objek bersarang dalam objek lain, Anda masih dapat mengambil data dengan menentukan semua level. Untuk melakukan ini, tempel yang berikut ini:
Top-Power-forwards.NBA players: {player-name:Lebron James}