

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# AWS AppSync JavaScript referensi fungsi resolver untuk OpenSearch
<a name="resolver-reference-elasticsearch-js"></a>

 AWS AppSync Resolver untuk Amazon OpenSearch Service memungkinkan Anda menggunakan GraphQL untuk menyimpan dan mengambil data di domain Layanan yang ada di akun Anda. OpenSearch Penyelesai ini berfungsi dengan memungkinkan Anda memetakan permintaan GraphQL yang masuk ke dalam permintaan Layanan, dan kemudian memetakan OpenSearch respons Layanan kembali ke GraphQL. OpenSearch Bagian ini menjelaskan permintaan fungsi dan penangan respons untuk operasi OpenSearch Layanan yang didukung.

## Permintaan
<a name="request-js"></a>

Sebagian besar objek permintaan OpenSearch Layanan memiliki struktur umum di mana hanya beberapa bagian yang berubah. Contoh berikut menjalankan pencarian terhadap domain OpenSearch Layanan, di mana dokumen bertipe `post` dan diindeks di bawah. `id` Parameter pencarian didefinisikan di `body` bagian, dengan banyak klausa kueri umum yang didefinisikan di `query` bidang. Contoh ini akan mencari dokumen yang berisi `"Nadia"``"Bailey"`, atau, atau keduanya, di `author` bidang dokumen:

```
export function request(ctx) {
  return {
    operation: 'GET',
    path: '/id/post/_search',
    params: {
      headers: {},
      queryString: {},
      body: {
        from: 0,
        size: 50,
        query: {
          bool: {
            should: [
              { match: { author: 'Nadia' } },
              { match: { author: 'Bailey' } },
            ],
          },
        },
      },
    },
  };
}
```

## Respons
<a name="response-mapping-template"></a>

Seperti sumber data lainnya, OpenSearch Layanan mengirimkan respons AWS AppSync yang perlu dikonversi ke GraphQL.

Sebagian besar kueri GraphQL mencari bidang `_source` dari respons Layanan. OpenSearch Karena Anda dapat melakukan pencarian untuk mengembalikan dokumen individual atau daftar dokumen, ada dua pola respons umum yang digunakan dalam OpenSearch Layanan:

 **Daftar Hasil** 

```
export function response(ctx) {
  const entries = [];
  for (const entry of ctx.result.hits.hits) {
    entries.push(entry['_source']);
  }
  return entries;
}
```

 **Barang Individu** 

```
export function response(ctx) {
  return ctx.result['_source']
}
```

## `operation`lapangan
<a name="operation-field"></a>

**catatan**  
Ini hanya berlaku untuk penangan Permintaan. 

Metode HTTP atau kata kerja (GET, POST, PUT, HEAD atau DELETE) yang AWS AppSync mengirim ke domain OpenSearch Layanan. Baik kunci dan nilainya harus berupa string.

```
"operation" : "PUT"
```

## `path`lapangan
<a name="path-field"></a>

**catatan**  
Ini hanya berlaku untuk penangan Permintaan. 

Jalur pencarian untuk permintaan OpenSearch Layanan dari AWS AppSync. Ini membentuk URL untuk kata kerja HTTP operasi. Baik kunci dan nilainya harus berupa string.

```
"path" : "/indexname/type"

"path" : "/indexname/type/_search"
```

Ketika penangan permintaan dievaluasi, jalur ini dikirim sebagai bagian dari permintaan HTTP, termasuk domain OpenSearch Layanan. Misalnya, contoh sebelumnya mungkin diterjemahkan ke:

```
GET https://opensearch-domain-name.REGION.es.amazonaws.com/indexname/type/_search
```

## `params`lapangan
<a name="params-field"></a>

**catatan**  
Ini hanya berlaku untuk penangan Permintaan. 

Digunakan untuk menentukan tindakan apa yang dilakukan penelusuran Anda, paling umum dengan menetapkan nilai **kueri** di dalam **badan**. Namun, ada beberapa kemampuan lain yang dapat dikonfigurasi, seperti pemformatan respons.
+  **header** 

  Informasi header, sebagai pasangan kunci-nilai. Baik kunci dan nilainya harus berupa string. Contoh:

  ```
  "headers" : {
      "Content-Type" : "application/json"
  }
  ```

   
**catatan**  
AWS AppSync saat ini hanya mendukung JSON sebagai file. `Content-Type`
+  **QueryString** 

  Pasangan nilai kunci yang menentukan opsi umum, seperti pemformatan kode untuk respons JSON. Baik kunci dan nilainya harus berupa string. Misalnya, jika Anda ingin mendapatkan JSON yang diformat dengan cantik, Anda akan menggunakan:

  ```
  "queryString" : {
      "pretty" : "true"
  }
  ```
+  **tubuh** 

  Ini adalah bagian utama dari permintaan Anda, memungkinkan AWS AppSync untuk membuat permintaan pencarian yang terbentuk dengan baik ke domain OpenSearch Layanan Anda. Kuncinya harus berupa string yang terdiri dari sebuah objek. Beberapa demonstrasi ditunjukkan di bawah ini.

 **Contoh 1** 

Kembalikan semua dokumen dengan kota yang cocok dengan “seattle”:

```
export function request(ctx) {
  return {
    operation: 'GET',
    path: '/id/post/_search',
    params: {
      headers: {},
      queryString: {},
      body: { from: 0, size: 50, query: { match: { city: 'seattle' } } },
    },
  };
}
```

 **Contoh 2** 

Kembalikan semua dokumen yang cocok dengan “washington” sebagai kota atau negara bagian:

```
export function request(ctx) {
  return {
    operation: 'GET',
    path: '/id/post/_search',
    params: {
      headers: {},
      queryString: {},
      body: {
        from: 0,
        size: 50,
        query: {
          multi_match: { query: 'washington', fields: ['city', 'state'] },
        },
      },
    },
  };
}
```

## Melewati variabel
<a name="passing-variables"></a>

**catatan**  
Ini hanya berlaku untuk penangan Permintaan. 

Anda juga dapat meneruskan variabel sebagai bagian dari evaluasi di penangan permintaan Anda. Misalnya, Anda memiliki kueri GraphQL seperti berikut:

```
query {
    searchForState(state: "washington"){
        ...
    }
}
```

Handler permintaan fungsi bisa sebagai berikut:

```
export function request(ctx) {
  return {
    operation: 'GET',
    path: '/id/post/_search',
    params: {
      headers: {},
      queryString: {},
      body: {
        from: 0,
        size: 50,
        query: {
          multi_match: { query: ctx.args.state, fields: ['city', 'state'] },
        },
      },
    },
  };
}
```