

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
<a name="searching"></a>

Ada beberapa metode umum untuk mencari dokumen di Amazon OpenSearch Service, termasuk pencarian URI dan pencarian isi permintaan. OpenSearch Layanan menawarkan fungsionalitas tambahan yang meningkatkan pengalaman pencarian, seperti paket khusus, dukungan SQL, dan pencarian asinkron. Untuk referensi API OpenSearch penelusuran yang komprehensif, lihat [OpenSearchdokumentasinya](https://docs.opensearch.org/latest/opensearch/query-dsl/full-text/).

**catatan**  
Permintaan sampel berikut bekerja dengan OpenSearch APIs. Beberapa permintaan mungkin tidak berfungsi dengan versi Elasticsearch yang lebih lama.

**Topics**
+ [Pencarian URI](#searching-uri)
+ [Pencarian isi permintaan](#searching-dsl)
+ [Pemberian nomor halaman hasil pencarian](#searching-paginating)
+ [Bahasa Kueri Dasbor](#DashboardsQueryLanguages)
+ [Mengimpor dan mengelola paket di Amazon Service OpenSearch](custom-packages.md)
+ [Menanyakan data OpenSearch Layanan Amazon Anda dengan SQL](sql-support.md)
+ [Pencarian lintas cluster di Layanan Amazon OpenSearch](cross-cluster-search.md)
+ [Belajar Memberi Peringkat untuk OpenSearch Layanan Amazon](learning-to-rank.md)
+ [Pencarian asinkron di Layanan Amazon OpenSearch](asynchronous-search.md)
+ [Cari titik waktu di OpenSearch Layanan Amazon](pit.md)
+ [Pencarian agen di Layanan Amazon OpenSearch](agentic-search.md)
+ [Pencarian semantik di Layanan Amazon OpenSearch](semantic-search.md)
+ [Pencarian segmen bersamaan di Amazon Service OpenSearch](concurrent-segment-search.md)
+ [Pembuatan kueri bahasa alami di Amazon OpenSearch Service](natural-language-query.md)

## Pencarian URI
<a name="searching-uri"></a>

Pencarian Universal Resource Identifier (URI) adalah bentuk pencarian yang paling sederhana. Dalam pencarian URI, Anda menentukan kueri sebagai parameter permintaan HTTP:

```
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`) di URI:

```
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
<a name="searching-dsl"></a>

Untuk melakukan pencarian yang lebih kompleks, gunakan isi permintaan HTTP 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](https://opensearch.org/docs/latest/opensearch/query-dsl/index/#a-note-on-unicode-special-characters-in-text-fields) dalam OpenSearch dokumentasi.

Kueri `match` berikut ini serupa dengan contoh [pencarian URI](#searching-uri) final:

```
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**  
API `_search` menerima HTTP `GET` dan `POST` untuk pencarian isi permintaan, tetapi tidak semua klien HTTP mendukung menambahkan isi 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
<a name="searching-dsl-boost"></a>

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
<a name="searching-dsl-highlighting"></a>

`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": ".,!? "
  }
}
```

### Jumlah API
<a name="searching-dsl-count"></a>

Jika Anda tidak tertarik dengan isi dokumen Anda dan hanya ingin mengetahui jumlah kecocokan, Anda dapat menggunakan API `_count` bukan API `_search`. 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
<a name="searching-paginating"></a>

Jika Anda perlu menampilkan sejumlah besar hasil pencarian, Anda dapat menerapkan pagination menggunakan beberapa metode berbeda. 

### Titik dalam waktu
<a name="pag-pit"></a>

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 dengan OpenSearch Layanan versi 2.5 dan yang lebih baru. Untuk informasi lebih lanjut tentang PIT, lihat[Cari titik waktu di OpenSearch Layanan Amazon](pit.md).

### `size`Parameter `from` dan
<a name="pag-from-size"></a>

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](https://opensearch.org/docs/latest/opensearch/search/paginate/) di dokumentasi. OpenSearch 

## Bahasa Kueri Dasbor
<a name="DashboardsQueryLanguages"></a>

Anda dapat menggunakan [Dashboards Query Language (DQL)](https://opensearch.org/docs/latest/dashboards/dql/#terms-query) untuk mencari data dan visualisasi di Dasbor. OpenSearch *DQL menggunakan empat jenis kueri utama: *istilah*, *Boolean*, *tanggal dan rentang, dan bidang* bersarang.*

**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 Boolean`AND`,`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 menggunakan DQL, 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 di 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}
```