

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

# Pencarian teks lengkap di Amazon Neptunus menggunakan Layanan Amazon OpenSearch
Pencarian teks lengkap Neptunus

Neptunus terintegrasi dengan [ OpenSearch Amazon Service OpenSearch (Layanan](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/)) untuk mendukung pencarian teks lengkap di kueri Gremlin dan SPARQL.

Dimulai dengan [rilis mesin 1.3.0.0](engine-releases-1.3.0.0.md), Amazon Neptunus mendukung penggunaan [Amazon OpenSearch Service Serverless](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless.html) untuk pencarian teks lengkap dalam kueri Gremlin dan SPARQL.

**catatan**  
Saat mengintegrasikan dengan Amazon OpenSearch Service, Neptunus memerlukan Elasticsearch versi 7.1 atau lebih tinggi, dan bekerja dengan 2.3, 2.5 dan lebih tinggi. OpenSearch [Neptunus juga bekerja dengan Tanpa Server. OpenSearch ](full-text-search-serverless.md)

Anda dapat menggunakan Neptunus dengan kluster Layanan yang OpenSearch ada yang telah diisi sesuai dengan. [Model data Neptunus untuk data OpenSearch](full-text-search-model.md) Atau, Anda dapat membuat domain OpenSearch Layanan yang ditautkan dengan Neptunus menggunakan tumpukan. AWS CloudFormation 

**penting**  
Proses Neptunus OpenSearch ke replikasi yang dijelaskan di sini tidak mereplikasi node kosong. Ini adalah batasan penting untuk diperhatikan.  
Selain itu, jika Anda mengaktifkan [kontrol akses berbutir halus](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/fgac.html) di OpenSearch cluster Anda, Anda perlu [mengaktifkan otentikasi IAM](iam-auth-enable.md) di database Neptunus Anda juga.

![\[Tata letak arsitektur poller aliran pencarian terbuka Neptunus.\]](http://docs.aws.amazon.com/id_id/neptune/latest/userguide/images/poller-architecture.PNG)


**Topics**
+ [

# Neptune-to-OpenSearchReplikasi Amazon
](full-text-search-cfn-setup.md)
+ [

# Replikasi ke Tanpa Server OpenSearch
](full-text-search-serverless.md)
+ [

# Kueri dari OpenSearch klaster dengan kontrol akses berbutir halus (FGAC) diaktifkan
](full-text-search-fgac.md)
+ [

# Menggunakan sintaks kueri Apache Lucene di kueri pencarian teks lengkap Neptunus
](full-text-search-lucene.md)
+ [

# Model data Neptunus untuk data OpenSearch
](full-text-search-model.md)
+ [

# Parameter pencarian teks lengkap Neptunus
](full-text-search-parameters.md)
+ [

# OpenSearch Pengindeksan non-string di Amazon Neptunus
](full-text-search-non-string-indexing.md)
+ [

# Full-text-search eksekusi kueri di Amazon Neptunus
](full-text-search-query-execution.md)
+ [

# Contoh kueri SPARQL menggunakan pencarian teks lengkap di Neptunus
](full-text-search-sparql-examples.md)
+ [

# Menggunakan pencarian teks lengkap Neptunus dalam kueri Gremlin
](full-text-search-gremlin.md)
+ [

# Memecahkan masalah pencarian teks lengkap Neptunus
](streams-consumer-troubleshooting.md)

# Neptune-to-OpenSearchReplikasi Amazon
Pengaturan pencarian teks lengkap

Amazon Neptunus mendukung pencarian teks lengkap dalam kueri Gremlin dan SPARQL menggunakan Layanan Amazon (Layanan). OpenSearch OpenSearch Anda dapat menggunakan AWS CloudFormation tumpukan untuk menautkan domain OpenSearch Layanan ke Neptunus. CloudFormation Template membuat instance aplikasi streams-consumer yang menyediakan Neptune-to-OpenSearch replikasi.

Sebelum memulai, Anda memerlukan kluster DB Neptunus yang sudah ada dengan aliran yang diaktifkan untuk berfungsi sebagai sumber, dan domain Layanan untuk berfungsi OpenSearch sebagai target replikasi.

Jika Anda sudah memiliki domain OpenSearch Layanan target yang ada yang dapat diakses oleh Lambda di VPC tempat cluster DB Neptunus Anda berada, template dapat menggunakan yang itu. Jika tidak, Anda perlu membuat domain yang baru.

**catatan**  
Fungsi OpenSearch cluster dan Lambda yang Anda buat harus berada di VPC yang sama dengan cluster DB Neptunus Anda, dan cluster OpenSearch harus dikonfigurasi dalam mode VPC (bukan mode Internet).

Kami menyarankan Anda menggunakan instance Neptunus yang baru dibuat untuk digunakan dengan Layanan. OpenSearch Jika Anda menggunakan instance yang sudah ada yang sudah memiliki data di dalamnya, Anda harus melakukan sinkronisasi data OpenSearch Layanan sebelum membuat kueri atau mungkin ada inkonsistensi data. GitHub Proyek ini memberikan contoh bagaimana melakukan sinkronisasi: [Ekspor Neptunus OpenSearch](https://github.com/awslabs/amazon-neptune-tools/tree/master/export-neptune-to-elasticsearch) ke https://github.com/awslabs/ amazon-neptune-tools (/-). tree/master/export neptune-to-elasticsearch

**penting**  
Saat berintegrasi dengan Amazon OpenSearch Service, Neptune memerlukan Elasticsearch versi 7.1 atau lebih tinggi, dan bekerja dengan versi Opensearch yang kompatibel dengan OpenSearch 2.3, 2.5 dan future.

**catatan**  
Dimulai dengan [rilis mesin 1.3.0.0](engine-releases-1.3.0.0.md), Amazon Neptunus mendukung penggunaan [Amazon OpenSearch Service Serverless](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless.html) untuk pencarian teks lengkap dalam kueri Gremlin dan SPARQL.

**Topics**
+ [

# Menggunakan AWS CloudFormation template untuk memulai Neptune-to-OpenSearch replikasi
](full-text-search-cfn-create.md)
+ [

# Mengaktifkan pencarian teks lengkap pada database Neptunus yang ada
](full-text-search-cfn-enabling.md)
+ [

# Memperbarui poller aliran
](full-text-search-cfn-update-poller.md)
+ [

# Menonaktifkan dan mengaktifkan kembali proses poller aliran
](full-text-search-using-pausing-poller.md)

# Menggunakan AWS CloudFormation template untuk memulai Neptune-to-OpenSearch replikasi
CloudFormation Template

## Luncurkan CloudFormation tumpukan khusus untuk wilayah Anda
CloudFormation template berdasarkan wilayah

Masing-masing CloudFormation template di bawah ini membuat instance aplikasi streams-consumer di wilayah tertentu AWS . Untuk meluncurkan tumpukan yang sesuai menggunakan CloudFormation konsol, pilih salah satu tombol **Launch Stack** di tabel berikut, tergantung pada AWS Wilayah yang ingin Anda gunakan.


| Region | Lihat | Lihat di Designer | Luncurkan | 
| --- | --- | --- | --- | 
| US East (N. Virginia) | [Lihat](https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [Lihat di Desainer](https://console.aws.amazon.com/cloudformation/designer/home?region=us-east-1&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [https://console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json](https://console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json)  | 
| AS Timur (Ohio) | [Lihat](https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [Lihat di Desainer](https://console.aws.amazon.com/cloudformation/designer/home?region=us-east-2&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [https://console.aws.amazon.com/cloudformation/home?region=us-east-2#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json](https://console.aws.amazon.com/cloudformation/home?region=us-east-2#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json)  | 
| US West (N. California) | [Lihat](https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [Lihat di Desainer](https://console.aws.amazon.com/cloudformation/designer/home?region=us-west-1&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [https://console.aws.amazon.com/cloudformation/home?region=us-west-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json](https://console.aws.amazon.com/cloudformation/home?region=us-west-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json)  | 
| US West (Oregon) | [Lihat](https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [Lihat di Desainer](https://console.aws.amazon.com/cloudformation/designer/home?region=us-west-2&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [https://console.aws.amazon.com/cloudformation/home?region=us-west-2#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json](https://console.aws.amazon.com/cloudformation/home?region=us-west-2#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json)  | 
| Kanada (Pusat) | [Lihat](https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [Lihat di Desainer](https://console.aws.amazon.com/cloudformation/designer/home?region=us-west-2&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [https://console.aws.amazon.com/cloudformation/home?region=ca-central-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json](https://console.aws.amazon.com/cloudformation/home?region=ca-central-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json)  | 
| Amerika Selatan (Sao Paulo) | [Lihat](https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [Lihat di Desainer](https://console.aws.amazon.com/cloudformation/designer/home?region=sa-east-1&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [https://console.aws.amazon.com/cloudformation/home?region=sa-east-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json](https://console.aws.amazon.com/cloudformation/home?region=sa-east-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json)  | 
| Europe (Stockholm) | [Lihat](https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [Lihat di Desainer](https://console.aws.amazon.com/cloudformation/designer/home?region=eu-north-1&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [https://console.aws.amazon.com/cloudformation/home?region=eu-north-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json](https://console.aws.amazon.com/cloudformation/home?region=eu-north-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json)  | 
| Eropa (Irlandia) | [Lihat](https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [Lihat di Desainer](https://console.aws.amazon.com/cloudformation/designer/home?region=eu-west-1&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [https://console.aws.amazon.com/cloudformation/home?region=eu-west-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json](https://console.aws.amazon.com/cloudformation/home?region=eu-west-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json)  | 
| Eropa (London) | [Lihat](https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [Lihat di Desainer](https://console.aws.amazon.com/cloudformation/designer/home?region=eu-west-2&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [https://console.aws.amazon.com/cloudformation/home?region=eu-west-2#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json](https://console.aws.amazon.com/cloudformation/home?region=eu-west-2#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json)  | 
| Europe (Paris) | [Lihat](https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [Lihat di Desainer](https://console.aws.amazon.com/cloudformation/designer/home?region=eu-west-3&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [https://console.aws.amazon.com/cloudformation/home?region=eu-west-3#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json](https://console.aws.amazon.com/cloudformation/home?region=eu-west-3#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json)  | 
| Eropa (Spanyol) | [Lihat](https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [Lihat di Desainer](https://console.aws.amazon.com/cloudformation/designer/home?region=eu-south-2&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [https://console.aws.amazon.com/cloudformation/home?region=eu-south-2#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json](https://console.aws.amazon.com/cloudformation/home?region=eu-south-2#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json)  | 
| Eropa (Frankfurt) | [Lihat](https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [Lihat di Desainer](https://console.aws.amazon.com/cloudformation/designer/home?region=eu-central-1&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [https://console.aws.amazon.com/cloudformation/home?region=eu-central-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json](https://console.aws.amazon.com/cloudformation/home?region=eu-central-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json)  | 
| Timur Tengah (Bahrain) | [Lihat](https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [Lihat di Desainer](https://console.aws.amazon.com/cloudformation/designer/home?region=me-south-1&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [https://console.aws.amazon.com/cloudformation/home?region=me-south-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json](https://console.aws.amazon.com/cloudformation/home?region=me-south-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json)  | 
| Timur Tengah (UAE) | [Lihat](https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [Lihat di Desainer](https://console.aws.amazon.com/cloudformation/designer/home?region=me-central-1&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [https://console.aws.amazon.com/cloudformation/home?region=me-central-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json](https://console.aws.amazon.com/cloudformation/home?region=me-central-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json)  | 
| Israel (Tel Aviv) | [Lihat](https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [Lihat di Desainer](https://console.aws.amazon.com/cloudformation/designer/home?region=il-central-1&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [https://console.aws.amazon.com/cloudformation/home?region=il-central-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json](https://console.aws.amazon.com/cloudformation/home?region=il-central-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json)  | 
| Africa (Cape Town) | [Lihat](https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [Lihat di Desainer](https://console.aws.amazon.com/cloudformation/designer/home?region=af-south-1&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [https://console.aws.amazon.com/cloudformation/home?region=af-south-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json](https://console.aws.amazon.com/cloudformation/home?region=af-south-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json)  | 
| Asia Pasifik (Hong Kong) | [Lihat](https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [Lihat di Desainer](https://console.aws.amazon.com/cloudformation/designer/home?region=ap-east-1&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [https://console.aws.amazon.com/cloudformation/home?region=ap-east-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json](https://console.aws.amazon.com/cloudformation/home?region=ap-east-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json)  | 
| Asia Pacific (Tokyo) | [Lihat](https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [Lihat di Desainer](https://console.aws.amazon.com/cloudformation/designer/home?region=ap-northeast-1&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [https://console.aws.amazon.com/cloudformation/home?region=ap-northeast-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json](https://console.aws.amazon.com/cloudformation/home?region=ap-northeast-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json)  | 
| Asia Pasifik (Seoul) | [Lihat](https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [Lihat di Desainer](https://console.aws.amazon.com/cloudformation/designer/home?region=ap-northeast-2&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [https://console.aws.amazon.com/cloudformation/home?region=ap-northeast-2#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json](https://console.aws.amazon.com/cloudformation/home?region=ap-northeast-2#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json)  | 
| Asia Pacific (Singapore) | [Lihat](https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [Lihat di Desainer](https://console.aws.amazon.com/cloudformation/designer/home?region=ap-southeast-1&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [https://console.aws.amazon.com/cloudformation/home?region=ap-southeast-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json](https://console.aws.amazon.com/cloudformation/home?region=ap-southeast-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json)  | 
| Asia Pasifik (Jakarta) | [Lihat](https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [Lihat di Desainer](https://console.aws.amazon.com/cloudformation/designer/home?region=ap-southeast-3&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [https://console.aws.amazon.com/cloudformation/home?region=ap-southeast-3#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json](https://console.aws.amazon.com/cloudformation/home?region=ap-southeast-3#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json)  | 
| Asia Pasifik (Mumbai) | [Lihat](https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [Lihat di Desainer](https://console.aws.amazon.com/cloudformation/designer/home?region=ap-south-1&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [https://console.aws.amazon.com/cloudformation/home?region=ap-south-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json](https://console.aws.amazon.com/cloudformation/home?region=ap-south-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json)  | 
| Tiongkok (Beijing) | [Lihat](https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [Lihat di Desainer](https://console.amazonaws.cn/cloudformation/designer/home?region=cn-north-1&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [https://console.amazonaws.cn/cloudformation/home?region=cn-north-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json](https://console.amazonaws.cn/cloudformation/home?region=cn-north-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json)  | 
| Tiongkok (Ningxia) | [Lihat](https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [Lihat di Desainer](https://console.amazonaws.cn/cloudformation/designer/home?region=cn-northwest-1&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [https://console.amazonaws.cn/cloudformation/home?region=cn-northwest-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json](https://console.amazonaws.cn/cloudformation/home?region=cn-northwest-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json)  | 
| AWS GovCloud (AS-Barat) | [Lihat](https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [Lihat di Desainer](https://console.amazonaws-us-gov.com/cloudformation/designer/home?region=us-gov-west-1&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [https://console.amazonaws-us-gov.com/cloudformation/home?region=us-gov-west-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json](https://console.amazonaws-us-gov.com/cloudformation/home?region=us-gov-west-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json)  | 
| AWS GovCloud (AS-Timur) | [Lihat](https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [Lihat di Desainer](https://console.amazonaws-us-gov.com/cloudformation/designer/home?region=us-gov-east-1&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json) | [https://console.amazonaws-us-gov.com/cloudformation/home?region=us-gov-east-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json](https://console.amazonaws-us-gov.com/cloudformation/home?region=us-gov-east-1#/stacks/new?stackName=NeptuneQuickStart&templateURL=https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json)  | 

Pada halaman **Buat Tumpukan**, pilih **Selanjutnya**.

## Tambahkan Detail Tentang OpenSearch tumpukan baru yang Anda buat
Tambahkan detail tumpukan

Halaman **Tentukan Detail Tumpukan** menyediakan properti dan parameter yang dapat Anda gunakan untuk mengontrol pengaturan pencarian teks lengkap:

**Nama Stack** — Nama CloudFormation tumpukan baru yang Anda buat. Anda dapat menggunakan nilai default secara umum, `NeptuneStreamPoller`.

Di bawah **Parameter**, berikan yang berikut ini:

**Konfigurasi jaringan untuk VPC tempat Konsumen Stream berjalan**
+ **`VPC`**— Berikan nama VPC tempat fungsi Lambda polling akan berjalan.
+ **`List of Subnet IDs`**— Subnet tempat jaringan antarmuka didirikan. Tambahkan subnet yang sesuai dengan klaster Neptune Anda.
+ **`List of Security Group Ids`**— Berikan grup keamanan IDs yang memberikan akses masuk tulis ke cluster DB Neptunus sumber Anda.
+ **`List of Route Table Ids`**— Ini diperlukan untuk membuat titik akhir Amazon DynamoDB di VPC Neptune Anda, jika Anda belum memilikinya. Anda harus memberikan daftar tabel rute yang dipisahkan koma yang IDs terkait dengan subnet.
+ **`Require to create Dynamo DB VPC Endpoint`**— Nilai Boolean yang default ke `true`. Anda hanya perlu mengubahnya menjadi `false` jika Anda telah membuat titik akhir DynamoDB di VPC Anda.
+ **`Require to create Monitoring VPC Endpoint`**— Nilai Boolean yang default ke `true`. Anda hanya perlu mengubahnya menjadi `false` jika Anda telah membuat titik akhir pemantauan di VPC Anda.

**Poller Stream**
+ **`Application Name`**— Anda umumnya dapat meninggalkan aturan ini ke default (`NeptuneStream`). Jika Anda menggunakan nama yang berbeda, itu harus unik.
+ **`Memory size for Lambda Poller`**— Digunakan untuk mengatur ukuran memori yang tersedia untuk fungsi poller Lambda. Nilai default-nya adalah 2,048 megabyte.
+ **`Lambda Runtime`**— Bahasa yang digunakan dalam fungsi Lambda yang mengambil item dari aliran Neptunus. Anda dapat mengatur ini baik ke `python3.9` atau ke `java8`.
+ **`S3 Bucket having Lambda code artifacts`**— Tinggalkan ini kosong kecuali Anda menggunakan fungsi polling Lambda kustom yang memuat dari bucket S3 yang berbeda.
+ **`S3 Key corresponding to Lambda Code artifacts`**— Tinggalkan ini kosong kecuali Anda menggunakan fungsi polling Lambda kustom.
+ **`StartingCheckpoint`**— pos pemeriksaan awal untuk poller aliran. Defaultnya adalah`0:0`, yang menandakan mulai dari awal aliran Neptunus.
+ **`StreamPollerInitialState`**- Keadaan awal poller. Defaultnya adalah`ENABLED`, yang berarti replikasi aliran akan dimulai segera setelah seluruh pembuatan tumpukan selesai.
+ **`Logging level for Lambda`**— Umumnya, tinggalkan aturan ini ke nilai default, `INFO`.
+ **`Managed Policies for Lambda Execution`**— Umumnya, tinggalkan ini kosong kecuali Anda menggunakan fungsi polling Lambda kustom.
+ **`Stream Records Handler`**— Secara umum, biarkan kosong ini kecuali Anda menggunakan penangan khusus untuk catatan di aliran Neptunus.
+ **`Maximum records Fetched from Stream`**— Anda dapat menggunakan parameter ini untuk menyetel performa. Default (`100`) adalah tempat yang baik untuk memulai. Maksimum yang diijinkan adalah 10.000. Semakin tinggi jumlahnya, semakin sedikit panggilan jaringan yang diperlukan untuk membaca catatan dari stream, tetapi semakin banyak memori diperlukan untuk memproses catatan.
+ **`Max wait time between two Polls (in Seconds)`**— Menentukan seberapa sering poller Lambda dipanggil untuk polling stream Neptune. Tetapkan nilai ini ke 0 untuk polling berkelanjutan. Nilai maksimum adalah 3.600 detik (1 jam). Nilai default (60 detik) adalah tempat yang baik untuk memulai, tergantung seberapa cepat data grafik Anda berubah.
+ **`Maximum Continuous polling period (in Seconds)`**- Digunakan untuk mengatur batas waktu untuk fungsi polling Lambda. Seharusnya antara 5 detik dan 900 detik. Nilai default (600 detik) adalah tempat yang baik untuk memulai.
+ **`Step Function Fallback Period`**— Jumlah step-function-fallback-period unit yang menunggu poller, setelah itu fungsi langkah dipanggil melalui Amazon CloudWatch Events untuk pulih dari kegagalan. Default (5 menit) adalah tempat yang baik untuk memulai.
+ **`Step Function Fallback Period Unit`**— Satuan waktu yang digunakan untuk mengukur sebelumnya `Step Function Fallback Period` (menit, jam, hari). Default (menit) umumnya cukup.
+ **`Enable/disable creation of Elastic Search Mappings by Lambda`**— Tandai ke manajemen enable/disable otomatis pemetaan Pencarian Elastis oleh poller aliran. Pemetaan Elastic Search sangat penting untuk konversi antara tipe data Neptunus dan Elastic Search. Ini hanya boleh dinonaktifkan oleh pengguna tingkat lanjut yang ingin mengambil kontrol manual langsung atas semua pemetaan dalam indeks Pencarian Elastis mereka. Nilai default-nya `true`.
+ **`Data replication scope`**— Menentukan apakah akan mereplikasi kedua node dan tepi, atau hanya node ke OpenSearch (ini hanya berlaku untuk data mesin Gremlin). Nilai default (Semua) umumnya tempat yang baik untuk memulai.
+ **`Ignore OpenSearch missing document error`**— Tandai untuk menentukan apakah kesalahan dokumen yang hilang OpenSearch dapat diabaikan. Kesalahan dokumen yang hilang jarang terjadi tetapi perlu intervensi manual jika tidak diabaikan. Nilai default (`True`) umumnya merupakan tempat yang baik untuk memulai.
+ **`Enable Non-String Indexing`**- Tandai untuk mengaktifkan atau menonaktifkan pengindeksan bidang yang tidak memiliki konten string. Jika bendera ini disetel ke`true`, bidang non-string diindeks OpenSearch, atau jika`false`, hanya bidang string yang diindeks. Nilai default-nya `true`.
+ **`Properties to exclude from being inserted into OpenSearch`**— Daftar properti atau kunci predikat yang dibatasi koma untuk dikecualikan dari pengindeksan. OpenSearch Jika nilai parameter CFN ini dibiarkan kosong, semua kunci properti diindeks.
+ **`Datatypes to exclude from being inserted into OpenSearch`**— Daftar properti atau tipe data predikat yang dibatasi koma untuk dikecualikan dari pengindeksan. OpenSearch Jika nilai parameter CFN ini dibiarkan kosong, semua nilai properti yang dapat dikonversi dengan aman ke OpenSearch tipe data diindeks.

**Stream Neptune**
+ **`Endpoint of source Neptune Stream`**— (*Wajib*) Ini mengambil salah satu dari dua bentuk:
  + **`https://your DB cluster:port/propertygraph/stream`**(atau aliasnya,`https://your DB cluster:port/pg/stream`).
  + `https://your DB cluster:port/sparql/stream`
+ **`Neptune Query Engine`**— Pilih Gremlin atau SPARQL.
+ **`Is IAM Auth Enabled?`**— Jika kluster DB Neptune Anda menggunakan otentikasi IAM, atur parameter ini ke `true`.
+ **`Neptune Cluster Resource Id`** – Jika kluster DB Neptune Anda menggunakan otentikasi IAM, atur parameter ini ke ID sumber daya. ID sumber daya tidak sama dengan ID cluster. Sebaliknya, ia mengambil bentuk: `cluster-` diikuti oleh 28 karakter alfa-numerik. Ini dapat ditemukan di bawah **Detail Klaster** di konsol Neptune.

**OpenSearch Cluster target**
+ **`Endpoint for OpenSearch service`**— (Wajib) Berikan titik akhir untuk OpenSearch layanan di VPC Anda.
+ **`Number of Shards for OpenSearch Index`** – Nilai default (5) umumnya tempat yang baik untuk memulai.
+ **`Number of Replicas for OpenSearch Index`** – Nilai default (1) umumnya tempat yang baik untuk memulai.
+ **`Geo Location Fields for Mapping`**— Jika Anda menggunakan bidang geolokasi, daftar kunci properti di sini.

**Alarm**
+ **`Require to create Cloud watch Alarm`**— Atur ini ke `true` jika Anda ingin membuat CloudWatch alarm untuk tumpukan baru.
+ **`SNS Topic ARN for Cloudwatch Alarm Notifications`**— Topik SNS ARN CloudWatch tempat pemberitahuan alarm harus dikirim (hanya diperlukan jika alarm diaktifkan).
+ **`Email for Alarm Notifications`**— Alamat email yang harus dikirim notifikasi alarm (hanya diperlukan jika alarm diaktifkan).

Untuk tujuan notifikasi alarm, Anda dapat menambahkan SNS saja, hanya email, atau SNS dan email.

## Jalankan CloudFormation Template
Jalankan Templat

Sekarang Anda dapat menyelesaikan proses instans aplikasi konsumen stream Neptune provisioning sebagai berikut:

1. Di CloudFormation, pada halaman **Tentukan Detail Tumpukan**, pilih **Berikutnya**.

1. Pada halaman **Opsi**, pilih **Selanjutnya**.

1. Pada halaman **Review**, pilih kotak centang pertama untuk mengetahui bahwa CloudFormation akan membuat sumber daya IAM. Pilih kotak centang kedua untuk mengetahui `CAPABILITY_AUTO_EXPAND` untuk tumpukan baru. 
**catatan**  
`CAPABILITY_AUTO_EXPAND` secara eksplisit mengakui bahwa macro akan diperluas saat membuat tumpukan, tanpa review sebelumnya. Pengguna sering kali membuat perubahan yang ditetapkan dari templat yang diproses, sehingga perubahan yang dibuat oleh makro bisa direview tepat sebelum membuat tumpukan. Untuk informasi selengkapnya, lihat operasi CloudFormation [CreateStack](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html)API di *Referensi AWS CloudFormation API*.

   Lalu pilih **Buat**.

# Mengaktifkan pencarian teks lengkap pada database Neptunus yang ada
Database yang ada

 Ini adalah pendekatan yang ditetapkan untuk memungkinkan pencarian teks lengkap pada database Amazon Neptunus yang ada. Bergantung pada apakah Anda dapat menjeda beban kerja tulis Anda atau tidak, langkah-langkahnya mungkin sedikit berbeda. Panduan ini menguraikan langkah-langkah yang disarankan untuk kedua skenario - kapan Anda dapat menjeda penulisan, dan kapan Anda tidak bisa. Ini mencakup mengaktifkan aliran Neptunus, membuat klon database, menyinkronkan data ke domain, dan menyiapkan OpenSearch pembaruan berkelanjutan. Panduan ini memanfaatkan AWS layanan dan alat sumber terbuka untuk merampingkan proses dan meminimalkan waktu henti. 

## Jika Anda dapat menjeda beban kerja tulis
Menjeda menulis

Cara terbaik untuk mengaktifkan pencarian teks lengkap pada database Neptunus yang ada umumnya sebagai berikut, asalkan Anda dapat menjeda beban kerja tulis Anda. Ini membutuhkan pembuatan klon, mengaktifkan aliran menggunakan parameter cluster, dan memulai ulang semua instance. Membuat klon adalah operasi yang relatif cepat, sehingga waktu henti yang diperlukan terbatas.

Berikut langkah-langkah yang diperlukan:

1. Hentikan semua beban kerja tulis pada database.

1. Aktifkan aliran pada database (lihat [Mengaktifkan Aliran Neptunus](streams-using-enabling.md)).

1. Buat klon database (lihat Kloning [Database di Neptunus](manage-console-cloning.md)).

1. Lanjutkan beban kerja tulis.

1. Gunakan [export-neptune-to-elasticsearch](https://github.com/awslabs/amazon-neptune-tools/tree/master/export-neptune-to-elasticsearch)alat di github untuk melakukan sinkronisasi satu kali dari database kloning ke domain. OpenSearch

1. Gunakan [CloudFormation template untuk wilayah Anda](https://docs.aws.amazon.com/neptune/latest/userguide/full-text-search-cfn-create.html#full-text-search-cfn-by-region) untuk memulai sinkronisasi dari database asli Anda dengan pembaruan berkelanjutan (tidak diperlukan perubahan konfigurasi dalam template).

1. Hapus database kloning dan CloudFormation tumpukan yang dibuat untuk `export-neptune-to-elasticsearch` alat.

**catatan**  
Jika menggunakan [export-neptune-to-elasticsearch](https://github.com/awslabs/amazon-neptune-tools/tree/master/export-neptune-to-elasticsearch)Opensearch Tanpa Server, yang `LambdaExecutionRole` dibuat oleh tumpukan [export-neptune-to-elasticsearch](https://github.com/awslabs/amazon-neptune-tools/tree/master/export-neptune-to-elasticsearch)Cloudformation harus ditambahkan ke [Kebijakan Akses Data Opensearch agar berhasil mereplikasi data](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-data-access.html).

## Jika Anda tidak dapat menjeda beban kerja tulis Anda
Tanpa berhenti menulis

Jika Anda tidak mampu menangguhkan beban kerja tulis pada database Anda, berikut adalah pendekatan yang membutuhkan waktu henti lebih sedikit daripada pendekatan yang disarankan di atas, tetapi perlu dilakukan dengan hati-hati:

1. Aktifkan aliran pada database (lihat [Mengaktifkan Aliran Neptunus](streams-using-enabling.md)).

1. Buat klon database (lihat Kloning [Database di Neptunus](manage-console-cloning.md)).

1. Dapatkan yang terbaru `eventID` untuk aliran pada database kloning dengan menjalankan perintah semacam ini terhadap titik akhir Streams API (lihat Memanggil REST API [Neptunus Streams untuk](streams-using-api-call.md) informasi selengkapnya):

   ```
   curl "https://(your neptune endpoint):(port)/(propertygraph or sparql)/stream?iteratorType=LATEST"
   ```

   Catat nilai-nilai di `commitNum` dan `opNum` bidang di `lastEventId` objek dalam respons.

1. Gunakan [export-neptune-to-elasticsearch](https://github.com/awslabs/amazon-neptune-tools/tree/master/export-neptune-to-elasticsearch)alat di github untuk melakukan sinkronisasi satu kali dari database kloning ke domain. OpenSearch

1. Gunakan [CloudFormation template untuk wilayah Anda untuk](https://docs.aws.amazon.com/neptune/latest/userguide/full-text-search-cfn-create.html#full-text-search-cfn-by-region) memulai sinkronisasi dari database asli Anda dengan pembaruan berkelanjutan.

   Buat perubahan berikut saat membuat tumpukan: pada halaman detail tumpukan, di bagian **Parameter**, atur nilai `StartingCheckpoint` bidang menjadi**commitNum**: **opnum** menggunakan `opNum` nilai `commitNum` dan yang Anda rekam di atas.

1. Hapus database kloning dan CloudFormation tumpukan yang dibuat untuk `export-neptune-to-elasticsearch` alat.

# Memperbarui poller aliran
Memperbarui poller

 Informasi berikut menguraikan langkah-langkah yang diperlukan untuk memperbarui poller aliran dengan artefak Lambda terbaru menggunakan konsol manajemen. AWS 

## Untuk memperbarui poller aliran dengan artefak Lambda terbaru
Untuk memperbarui kode Lambda

Anda dapat memperbarui poller aliran dengan artefak kode Lambda terbaru sebagai berikut:

1. Di Konsol Manajemen AWS, navigasikan ke CloudFormation dan pilih CloudFormation tumpukan induk utama.

1. Pilih opsi **Perbarui** untuk tumpukan.

1. Pilih **Ganti template saat ini**.

1. Untuk sumber template, pilih URL **Amazon S3 dan masukkan URL** S3 berikut:

   ```
   https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json
   ```

1. Pilih **Berikutnya** tanpa mengubah CloudFormation parameter apa pun.

1. Pilih **Update Stack**.

Tumpukan sekarang akan memperbarui artefak Lambda dengan yang terbaru.

## Memperluas stream poller untuk mendukung bidang kustom
Bidang kustom

Poller aliran saat ini dapat dengan mudah diperluas untuk menulis kode khusus untuk menangani bidang khusus, seperti yang dijelaskan secara rinci dalam posting blog ini: [Tangkap perubahan grafik menggunakan Aliran Neptunus](https://aws.amazon.com/blogs/database/capture-graph-changes-using-neptune-streams/).

**catatan**  
Saat menambahkan bidang khusus OpenSearch, pastikan untuk menambahkan bidang baru sebagai objek dalam predikat (lihat[Model data pencarian teks lengkap Neptunus](full-text-search-model.md)).

# Menonaktifkan dan mengaktifkan kembali proses poller aliran
Menghentikan dan memulai poller

**Awas**  
Hati-hati saat Anda menonaktifkan proses poller aliran\$1 Kehilangan data dapat terjadi jika proses dijeda lebih lama dari jendela kedaluwarsa aliran. Jendela default adalah 7 hari, tetapi dimulai dengan versi mesin [1.2.0.0](engine-releases-1.2.0.0.md), Anda dapat mengatur jendela kedaluwarsa aliran kustom hingga maksimum 90 hari.

# Menonaktifkan (menjeda) proses poller aliran
Jeda poller

1. Masuk ke Konsol Manajemen AWS dan buka EventBridge konsol Amazon di [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/).

1. Di panel navigasi, pilih **Aturan**.

1. Pilih aturan yang namanya berisi nama yang Anda berikan sebagai **Nama Aplikasi** dalam CloudFormation template yang Anda gunakan untuk mengatur poller aliran.

1. Pilih **Disable** (Nonaktifkan).

1. Buka konsol Step Functions di [https://console.aws.amazon.com/states/](https://console.aws.amazon.com/states/).

1. Pilih fungsi langkah berjalan yang sesuai dengan proses poller aliran. Sekali lagi, nama fungsi langkah itu berisi nama yang Anda berikan sebagai **Nama Aplikasi** dalam CloudFormation template yang Anda gunakan untuk mengatur poller aliran. Anda dapat memfilter berdasarkan status eksekusi fungsi untuk melihat hanya fungsi **Menjalankan**.

1. Pilih **Berhenti**.

# Mengaktifkan kembali proses poller aliran
Aktifkan kembali poller

1. Masuk ke Konsol Manajemen AWS dan buka EventBridge konsol Amazon di [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/).

1. Di panel navigasi, pilih **Aturan**.

1. Pilih aturan yang namanya berisi nama yang Anda berikan sebagai **Nama Aplikasi** dalam CloudFormation template yang Anda gunakan untuk mengatur poller aliran.

1. Pilih **Aktifkan**. Aturan acara berdasarkan interval terjadwal yang ditentukan sekarang akan memicu eksekusi baru dari fungsi langkah.

# Replikasi ke Tanpa Server OpenSearch
OpenSearch Tanpa server

Dimulai dengan [rilis mesin 1.3.0.0](engine-releases-1.3.0.0.md), Amazon Neptunus mendukung penggunaan [Amazon OpenSearch Service Serverless](https://docs.aws.amazon.com//opensearch-service/latest/developerguide/serverless.html) untuk pencarian teks lengkap dalam kueri Gremlin dan SPARQL. Menggunakan OpenSearch Tanpa Server mengharuskan Anda untuk [mengaktifkan otentikasi IAM di](https://docs.aws.amazon.com/neptune/latest/userguide/iam-auth-enable.html) cluster Database Neptunus Anda. Cluster Neptunus Database dengan autentikasi IAM dinonaktifkan tidak didukung dengan Tanpa Server. OpenSearch 

## Perubahan yang diperlukan untuk fungsi AWS Lambda poller


Jika Anda mereplikasi ke OpenSearch Tanpa Server, tambahkan peran eksekusi poller aliran Lambda ke kebijakan akses data untuk koleksi Tanpa Server. OpenSearch ARN untuk peran eksekusi poller aliran Lambda memiliki format ini:

```
arn:aws:iam::(account ID):role/stack-name-NeptuneOSReplication-NeptuneStreamPollerExecu-(uuid)
```

## Perubahan yang diperlukan untuk utilitas impor massal


 Jika Anda menggunakan [ export-neptune-to-elasticsearch](https://github.com/awslabs/amazon-neptune-tools/tree/master/export-neptune-to-elasticsearch)untuk menyinkronkan data yang ada ke OpenSearch Tanpa Server, tambahkan `LambdaExecutionRole` dari CloudFormation tumpukan ke kebijakan akses data untuk koleksi Tanpa Server. OpenSearch ARN untuk `LambdaExecutionRole` memiliki format ini: 

```
arn:aws:iam::012345678901:role/stack-name-LambdaExecutionRole-(id)
```

Untuk informasi selengkapnya, lihat [Kontrol akses data untuk Amazon Tanpa OpenSearch Server](https://docs.aws.amazon.com//opensearch-service/latest/developerguide/serverless-data-access.html).

## Perubahan yang diperlukan pada peran IAM yang digunakan untuk menanyakan Neptunus


Entitas IAM (Pengguna atau Peran) yang digunakan untuk menghubungkan ke database Neptunus harus memiliki izin baik untuk Neptunus dan koleksi Tanpa Server. OpenSearch Ini berarti bahwa pengguna atau peran Anda harus memiliki kebijakan OpenSearch Tanpa Server seperti ini terlampir:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowOpenSearchServerlessAccess",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:root"
      },
      "Action": "aoss:APIAccessAll",
      "Resource": "arn:aws:aoss:us-east-1:111122223333:collection/collection-id"
    }
  ]
}
```

------

Lihat [Membuat pernyataan kebijakan IAM khusus untuk mengakses data di Amazon Neptunus](iam-data-access-policies.md) untuk informasi selengkapnya.

# Kueri dari OpenSearch klaster dengan kontrol akses berbutir halus (FGAC) diaktifkan
Meminta dengan kontrol akses berbutir halus

Jika Anda telah mengaktifkan [kontrol akses berbutir halus](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/fgac.html) di OpenSearch cluster Anda, Anda perlu [mengaktifkan otentikasi IAM](iam-auth-enable.md) di database Neptunus Anda juga.

Entitas IAM (Pengguna atau Peran) yang digunakan untuk menghubungkan ke database Neptunus harus memiliki izin baik untuk Neptunus dan cluster. OpenSearch Ini berarti bahwa pengguna atau peran Anda harus memiliki kebijakan OpenSearch Layanan seperti ini terlampir:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowFullTextSearchAccess",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:root"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:us-east-1:111122223333:domain/domain-name/*"
    }
  ]
}
```

------

Lihat [Membuat pernyataan kebijakan IAM khusus untuk mengakses data di Amazon Neptunus](iam-data-access-policies.md) untuk informasi selengkapnya.

# Menggunakan sintaks kueri Apache Lucene di kueri pencarian teks lengkap Neptunus
Penggunaan sintaks Lucene

OpenSearch mendukung penggunaan [sintaks Apache Lucene](https://lucene.apache.org/core/8_9_0/queryparser/org/apache/lucene/queryparser/classic/package-summary.html#package.description) untuk kueri query\$1string. Ini sangat berguna untuk meneruskan beberapa filter dalam kueri.

Neptunus menggunakan struktur bersarang untuk menyimpan properti dalam OpenSearch dokumen (lihat). [Model data pencarian teks lengkap Neptunus](full-text-search-model.md) Saat menggunakan sintaks Lucene, Anda perlu menggunakan jalur lengkap ke properti dalam model berikutnya ini.

Berikut adalah contoh Gremlin:

```
g.withSideEffect("Neptune#fts.endpoint", "es_endpoint")
 .withSideEffect("Neptune#fts.queryType", "query_string")
 .V()
 .has("*", "Neptune#fts predicates.name.value:\"Jane Austin\" AND entity_type:Book")
```

Berikut adalah contoh SPARQL:

```
PREFIX neptune-fts: <http://aws.amazon.com/neptune/vocab/v01/services/fts#>
SELECT * WHERE {
  SERVICE neptune-fts:search {
  neptune-fts:config neptune-fts:endpoint 'http://localhost:9200 (http://localhost:9200/)' .
  neptune-fts:config neptune-fts:queryType 'query_string' .
  neptune-fts:config neptune-fts:query "predicates.\\*foaf\\*name.value:Ronak AND predicates.\\*foaf\\*surname.value:Sh*" .
  neptune-fts:config neptune-fts:field '*' .
  neptune-fts:config neptune-fts:return ?res .
}
```

# Model data Neptunus untuk data OpenSearch
Model data pencarian teks lengkap Neptunus

Amazon Neptunus menggunakan struktur dokumen JSON terpadu untuk menyimpan data SPARQL dan Gremlin dalam Layanan. OpenSearch Setiap dokumen OpenSearch sesuai dengan entitas dan menyimpan semua informasi yang relevan untuk entitas tersebut. Untuk Gremlin, simpul dan tepi dianggap entitas, sehingga OpenSearch dokumen yang sesuai memiliki informasi tentang simpul, label, dan properti. Untuk SPARQL, subjek dapat dianggap entitas, sehingga OpenSearch dokumen yang sesuai memiliki informasi tentang semua pasangan objek predikat dalam satu dokumen.

**catatan**  
 Neptune-to-OpenSearchImplementasi replikasi hanya menyimpan data string. Namun, Anda dapat mengubahnya untuk menyimpan jenis data lain.

Struktur dokumen JSON terpadu terlihat seperti berikut ini.

```
{
  "entity_id": "Vertex Id/Edge Id/Subject URI",
  "entity_type": [List of Labels/rdf:type object value],
  "document_type": "vertex/edge/rdf-resource"
  "predicates": {
    "Property name or predicate URI": [
      {
        "value": "Property Value or Object Value",
        "graph": "(Only for Sparql) Named Graph Quad is present"
        "language": "(Only for Sparql) rdf:langString"
      },
      {
        "value": "Property Value 2/ Object Value 2",
      }
    ]
  }
}
```

****
+ `entity_id` — ID unik entitas yang mewakili dokumen.
  + Untuk SPARQL, ini adalah URI subjek.
  + Untuk Gremlin, ini adalah `Vertex_ID` atau `Edge_ID`.
+ `entity_type` — Mewakili satu label atau lebih untuk vertex atau edge, atau nilai predikat `rdf:type` nol atau lebih untuk subjek.
+ `document_type` — Digunakan untuk menentukan apakah dokumen saat ini merupakan vertex, edge, atau rdf-sumber daya.
+ `predicates` — Untuk Gremlin, menyimpan properti dan nilai-nilai untuk vertex atau edge. Untuk SPARQL, menyimpan pasangan predikat-objek.

  Nama properti mengambil formulir `properties.name.value` di OpenSearch. Untuk mengkuerinya, Anda harus memberi namanya dalam bentuk itu.
+ `value ` — Sebuah nilai properti untuk Gremlin atau nilai objek untuk SPARQL.
+ `graph` — Sebuah grafik bernama untuk SPARQL.
+ `language` — Tanda bahasa untuk literal `rdf:langString` dalam SPARQL.

## Contoh dokumen OpenSearch SPARQL
Dokumen sampel SPARQL

**Data**

```
@prefix dt:   <http://example.org/datatype#> .
@prefix ex:   <http://example.org/> .
@prefix xsd:  <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

ex:simone   rdf:type     ex:Person                    ex:g1
ex:michael  rdf:type     ex:Person                    ex:g1
ex:simone   ex:likes     "spaghetti"                  ex:g1

ex:simone   ex:knows     ex:michael                   ex:g2   # Not stored in ES
ex:simone   ex:likes     "spaghetti"                  ex:g2
ex:simone   ex:status    "La vita è un sogno"@it      ex:g2

ex:simone   ex:age       "40"^^xsd:int                DG      # Not stored in ES
ex:simone   ex:dummy     "testData"^^dt:newDataType   DG      # Not stored in ES
ex:simone   ex:hates     _:bnode                              # Not stored in ES
_:bnode     ex:means     "coding"                     DG      # Not stored in ES
```

**Dokumen**

```
{
  "entity_id": "http://example.org/simone",
  "entity_type": ["http://example.org/Person"],
  "document_type": "rdf-resource"
  "predicates": {
    "http://example.org/likes": [
      {
        "value": "spaghetti",
        "graph": "http://example.org/g1"
      },
      {
        "value": "spaghetti",
        "graph": "http://example.org/g2"
      }
    ]
    "http://example.org/status": [
      {
        "value": "La vita è un sogno",
        "language": "it"       // Only present for rdf:langString
      }
    ]
  }
}
```

```
{
  "entity_id" : "http://example.org/michael",
  "entity_type" : ["http://example.org/Person"],
  "document_type": "rdf-resource"
}
```

## Contoh dokumen Gremlin OpenSearch
Dokumen sampel Gremlin

**Data**

```
# Vertex 1
simone   label    Person       <== Label
simone   likes    "spaghetti"  <== Property
simone   likes    "rice"       <== Property
simone   age      40           <== Property

# Vertex 2
michael  label    Person       <== Label

# Edge 1
simone  knows     michael      <== Edge
e1      updated  "2019-07-03"  <== Edge Property
e1      through  "company"     <== Edge Property
e1      since     10           <== Edge Property
```

**Dokumen**

```
{
  "entity_id": "simone",
  "entity_type": ["Person"],
  "document_type": "vertex",
  "predicates": {
    "likes": [
      {
        "value": "spaghetti"
      },
      {
        "value": "rice"
      }
    ]
  }
}
```

```
{
  "entity_id" : "michael",
  "entity_type" : ["Person"],
  "document_type": "vertex"
}
```

```
{
  "entity_id": "e1",
  "entity_type": ["knows"],
  "document_type": "edge"
  "predicates": {
    "through": [
      {
        "value": "company"
      }
    ]
  }
}
```

# Parameter pencarian teks lengkap Neptunus
Parameter pencarian teks lengkap

Amazon Neptunus menggunakan parameter berikut untuk menentukan kueri OpenSearch teks lengkap di Gremlin dan SPARQL:
+ **`queryType`**— (*Diperlukan*) Jenis OpenSearch kueri. (Untuk daftar jenis kueri, lihat [OpenSearch dokumentasi](https://www.elastic.co/guide/en/elasticsearch/reference/current/full-text-queries.html)). Neptunus mendukung jenis kueri berikut OpenSearch :
  + [simple\$1query\$1string](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html) — Mengembalikan dokumen berdasarkan string kueri yang disediakan, menggunakan pengurai dengan sintaks Lucene terbatas tapi toleran kesalahan. Ini adalah jenis kueri default.

    Kueri ini menggunakan sintaks sederhana untuk mengurai dan membagi string kueri yang disediakan menjadi istilah berdasarkan operator khusus. Kueri kemudian menganalisis setiap istilah secara independen sebelum mengembalikan dokumen yang cocok.

    Sementara sintaksnya lebih terbatas dari kueri `query_string`, kueri `simple_query_string` tidak mengembalikan kesalahan untuk sintaks yang tidak valid. Sebaliknya, kueri tersebut mengabaikan setiap bagian yang tidak valid dari string kueri.
  + [match](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html) — Kueri `match` adalah kueri standar untuk melakukan pencarian teks lengkap, termasuk opsi untuk pencocokan fuzzy.
  + [prefix](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-prefix-query.html) — Mengembalikan dokumen yang berisi prefiks tertentu di bidang yang disediakan.
  + [fuzzy](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-fuzzy-query.html) — Mengembalikan dokumen yang berisi istilah yang mirip dengan istilah pencarian, yang diukur dengan jarak edit Levenshtein.

    Jarak edit adalah jumlah perubahan satu karakter yang diperlukan untuk mengubah satu istilah ke istilah lain. Perubahan ini dapat mencakup:
    + Mengubah karakter (box ke fox).
    + Menghapus karakter (black ke lack).
    + Memasukkan karakter (sic ke sick).
    + Mengubah urutan dua karakter yang berdekatan (act ke cat).

    Untuk menemukan istilah yang sama, kueri fuzzy menciptakan serangkaian semua kemungkinan variasi dan perluasan istilah pencarian dalam jarak edit yang ditentukan dan kemudian mengembalikan kecocokan tepat untuk masing-masing varian tersebut.
  + [term](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html) — Mengembalikan dokumen yang berisi kecocokan tepat dari istilah tertentu di salah satu bidang yang ditentukan.

    Anda dapat menggunakan kueri `term` untuk menemukan dokumen berdasarkan nilai yang tepat seperti harga, ID produk, atau nama pengguna.
**Awas**  
Hindari menggunakan kueri istilah untuk bidang teks. Secara default, OpenSearch mengubah nilai bidang teks sebagai bagian dari analisisnya, yang dapat membuat sulit menemukan kecocokan yang tepat untuk nilai bidang teks.  
Untuk mencari nilai bidang teks, gunakan kueri match sebagai gantinya.
  + [simple\$1query\$1string](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html) — Mengembalikan dokumen berdasarkan string kueri yang disediakan, menggunakan pengurai dengan sintaks ketat (sintaks Lucene).

    Kueri ini menggunakan sintaks untuk mengurai dan membagi string kueri yang disediakan berdasarkan operator, seperti AND dan NOT. Kueri kemudian menganalisis setiap istilah secara independen sebelum mengembalikan dokumen yang cocok.

    Anda dapat menggunakan `query_string` untuk membuat pencarian kompleks yang mencakup karakter wildcard, pencarian di beberapa bidang, dan lainnya. Meski serbaguna, kueri tersebut ketat dan mengembalikan kesalahan jika string kueri menyertakan sintaks yang tidak valid.
**Awas**  
Karena kueri tersebut mengembalikan kesalahan untuk sintaks yang tidak valid, kami tidak menyarankan menggunakan kueri `query_string` untuk kotak pencarian.  
Jika Anda tidak perlu mendukung sintaks kueri, pertimbangkan untuk menggunakan kueri `match`. Jika Anda membutuhkan fitur sintaks kueri, gunakan kueri `simple_query_string`, yang kurang ketat.
+ **`field`**— Bidang OpenSearch yang digunakan untuk menjalankan pencarian. Hal ini dapat dihilangkan hanya jika `queryType` mengizinkannya (sebagaimana `simple_query_string` dan `query_string` lakukan), dalam hal ini pencarian terhadap semua bidang. Di Gremlin, ini implisit.

  Beberapa bidang dapat ditentukan jika kueri mengizinkannya, seperti halnya `simple_query_string` dan `query_string`.
+ **`query`**— (*Wajib*) Kueri untuk dijalankan terhadap OpenSearch. Isi dari bidang ini dapat bervariasi sesuai dengan QueryType. QueryTypes berbeda menerima sintaks yang berbeda, sebagaimana `Regexp` lakukan, misalnya. Di Gremlin, `query` implisit.
+ **`maxResults`** — Jumlah maksimum hasil yang akan dikembalikan. Defaultnya adalah `index.max_result_window` OpenSearch pengaturan, yang dengan sendirinya default menjadi 10.000. Parameter `maxResults` dapat menentukan angka yang lebih rendah dari itu.
**penting**  
Jika Anda menyetel `maxResults` ke nilai yang lebih tinggi dari OpenSearch `index.max_result_window` nilai dan mencoba mengambil lebih dari `index.max_result_window` hasil, OpenSearch gagal dengan `Result window is too large` kesalahan. Namun, Neptune menangani ini dengan anggun tanpa menyebarkan kesalahan. Ingatlah hal ini jika Anda mencoba untuk mengambil lebih dari `index.max_result_window` hasil.
+ **`minScore`** — Nilai minimum hasil pencarian harus dikembalikan. Lihat [dokumentasi OpenSearch relevansi](https://www.elastic.co/guide/en/elasticsearch/guide/current/scoring-theory.html) untuk penjelasan penilaian hasil.
+ **`batchSize`** — Neptune selalu mengambil data dalam batch (ukuran batch default adalah 100). Anda dapat menggunakan parameter ini untuk menyetel performa. Ukuran batch tidak dapat melebihi `index.max_result_window` OpenSearch pengaturan, yang defaultnya 10.000.
+ **`sortBy`**— Parameter opsional yang memungkinkan Anda mengurutkan hasil yang dikembalikan OpenSearch oleh salah satu dari berikut ini:
  + *Bidang string tertentu dalam dokumen* -  

    Sebagai contoh, dalam kueri SPARQL, Anda dapat menentukan:

    ```
        neptune-fts:config neptune-fts:sortBy foaf:name .
    ```

    Dalam kueri Gremlin yang sama, Anda bisa menentukan:

    ```
        .withSideEffect('Neptune#fts.sortBy', 'name')
    ```
  + *Bidang non-string tertentu (`long`,`double`, dll.) dalam dokumen* —  

    Perhatikan bahwa saat menyortir bidang non-string, Anda perlu menambahkan `.value` ke nama bidang untuk membedakannya dari bidang string.

    Sebagai contoh, dalam kueri SPARQL, Anda dapat menentukan:

    ```
        neptune-fts:config neptune-fts:sortBy foaf:name.value .
    ```

    Dalam kueri Gremlin yang sama, Anda bisa menentukan:

    ```
        .withSideEffect('Neptune#fts.sortBy', 'name.value')
    ```
  + `score` — Urutkan berdasarkan skor kecocokan (default).

    Jika parameter `sortOrder` ada tetapi `sortBy` tidak ada, hasilnya diurutkan berdasarkan `score` dalam urutan yang ditentukan oleh `sortOrder`.
  + `id`— Urutkan berdasarkan ID, yang berarti URI subjek SPARQL atau simpul Gremlin atau ID tepi.

    Sebagai contoh, dalam kueri SPARQL, Anda dapat menentukan:

    ```
        neptune-fts:config neptune-fts:sortBy 'Neptune#fts.entity_id' .
    ```

    Dalam kueri Gremlin yang sama, Anda bisa menentukan:

    ```
        .withSideEffect('Neptune#fts.sortBy', 'Neptune#fts.entity_id')
    ```
  + `label` — Urutkan berdasarkan label.

    Sebagai contoh, dalam kueri SPARQL, Anda dapat menentukan:

    ```
        neptune-fts:config neptune-fts:sortBy 'Neptune#fts.entity_type' .
    ```

    Dalam kueri Gremlin yang sama, Anda bisa menentukan:

    ```
        .withSideEffect('Neptune#fts.sortBy', 'Neptune#fts.entity_type')
    ```
  + `doc_type` — Urutkan berdasarkan jenis dokumen (yaitu SPARQL atau Gremlin).

    Sebagai contoh, dalam kueri SPARQL, Anda dapat menentukan:

    ```
        neptune-fts:config neptune-fts:sortBy 'Neptune#fts.document_type' .
    ```

    Dalam kueri Gremlin yang sama, Anda bisa menentukan:

    ```
        .withSideEffect('Neptune#fts.sortBy', 'Neptune#fts.document_type')
    ```

  Secara default, OpenSearch hasil tidak diurutkan dan urutannya non-deterministik, artinya kueri yang sama dapat mengembalikan item dalam urutan yang berbeda setiap kali dijalankan. Untuk alasan ini, jika set hasil lebih besar dari `max_result_window`, subset yang sangat berbeda dari hasil total dapat dikembalikan setiap kali kueri dijalankan. Namun, dengan mengurutkan, Anda dapat membuat hasil dari proses yang berbeda lebih dapat dibandingkan secara langsung.

  Jika tidak ada parameter `sortOrder` yang menyertai `sortBy`, urutan turun (`DESC`) dari terbesar ke terkecil digunakan.
+ **`sortOrder`**— Parameter opsional yang memungkinkan Anda menentukan apakah OpenSearch hasil diurutkan dari terkecil ke terbesar atau dari terbesar ke yang paling kecil (default):

****
  + `ASC` — Urutan naik, dari terkecil ke terbesar.
  + `DESC` — Urutan turun, dari yang terbesar ke terkecil.

    Ini adalah nilai default, digunakan ketika parameter `sortBy` ada tetapi `sortOrder` tidak ditentukan.

  Jika tidak ada `sortBy` atau tidak `sortOrder` ada, OpenSearch hasil tidak diurutkan secara default.

# OpenSearch Pengindeksan non-string di Amazon Neptunus
Pengindeksan non-string

 OpenSearch Pengindeksan non-string di Amazon Neptunus memungkinkan replikasi nilai non-string untuk predikat untuk menggunakan poller aliran. OpenSearch Semua nilai predikat yang dapat dengan aman dikonversi ke OpenSearch pemetaan atau tipe data yang sesuai kemudian direplikasi ke. OpenSearch

Agar pengindeksan non-string diaktifkan pada tumpukan baru, `Enable Non-String Indexing` bendera di CloudFormation template harus disetel ke. `true` Ini adalah pengaturan default. Untuk memperbarui tumpukan yang ada untuk mendukung pengindeksan non-string, lihat [Memperbarui tumpukan yang ada](full-text-search-non-string-indexing-update.md) di bawah.

**catatan**  
Cara terbaik adalah tidak mengaktifkan pengindeksan non-string pada versi mesin lebih awal dari. **`1.0.4.2`**
OpenSearch kueri menggunakan ekspresi reguler untuk nama bidang yang cocok dengan beberapa bidang, beberapa di antaranya berisi nilai string dan yang lainnya berisi nilai non-string, gagal dengan kesalahan. Hal yang sama terjadi jika kueri pencarian teks lengkap di Neptunus adalah jenis itu.
Saat mengurutkan berdasarkan bidang non-string, tambahkan “.value” ke nama bidang untuk membedakannya dari bidang string.

**Contents**
+ [

# Memperbarui tumpukan pencarian teks lengkap Neptunus yang ada untuk mendukung pengindeksan non-string
](full-text-search-non-string-indexing-update.md)
+ [

# Memfilter bidang apa yang diindeks dalam pencarian teks lengkap Neptunus
](full-text-search-non-string-indexing-filters.md)
  + [

## Filter berdasarkan properti atau nama predikat
](full-text-search-non-string-indexing-filters.md#full-text-search-non-string-indexing-filters-name)
  + [

## Filter berdasarkan properti atau jenis nilai predikat
](full-text-search-non-string-indexing-filters.md#full-text-search-non-string-indexing-filters-datatype)
+ [

# Pemetaan tipe data SPARQL dan Gremlin ke OpenSearch
](full-text-search-non-string-indexing-mapping.md)
+ [

# Validasi pemetaan data
](full-text-search-data-validation.md)
+ [

# Contoh OpenSearch kueri non-string di Neptunus
](full-text-search-non-string-examples.md)
  + [

## Dapatkan semua simpul dengan usia lebih dari 30 dan nama dimulai dengan “Si”
](full-text-search-non-string-examples.md#full-text-search-non-string-example-1)
  + [

## Dapatkan semua node dengan usia antara 10 dan 50 dan nama dengan kecocokan fuzzy dengan “Ronka”
](full-text-search-non-string-examples.md#full-text-search-non-string-example-2)
  + [

## Dapatkan semua node dengan stempel waktu yang jatuh dalam 25 hari terakhir
](full-text-search-non-string-examples.md#full-text-search-non-string-example-3)
  + [

## Dapatkan semua node dengan stempel waktu yang termasuk dalam tahun dan bulan tertentu
](full-text-search-non-string-examples.md#full-text-search-non-string-example-4)

# Memperbarui tumpukan pencarian teks lengkap Neptunus yang ada untuk mendukung pengindeksan non-string
Memperbarui tumpukan yang ada

Jika Anda sudah menggunakan pencarian teks lengkap Neptunus, berikut adalah langkah-langkah yang perlu Anda ambil untuk mendukung pengindeksan non-string:

1. **Hentikan fungsi Lambda poller aliran.** Ini memastikan bahwa tidak ada pembaruan baru yang disalin selama ekspor. Lakukan ini dengan menonaktifkan aturan peristiwa cloud yang memanggil fungsi Lambda:
   + Di Konsol Manajemen AWS, navigasikan ke CloudWatch.
   + Pilih **Aturan**.
   + Pilih aturan dengan nama poller aliran Lambda.
   + Pilih **nonaktifkan** untuk menonaktifkan aturan sementara.

1. **Hapus indeks Neptunus saat ini di. OpenSearch** Gunakan `curl` kueri berikut untuk menghapus `amazon_neptune` indeks dari OpenSearch klaster Anda:

   ```
   curl -X DELETE "your OpenSearch endpoint/amazon_neptune"
   ```

1. **Mulai ekspor satu kali dari Neptunus ke. OpenSearch** Yang terbaik adalah menyiapkan OpenSearch tumpukan baru pada saat ini, sehingga artefak baru diambil untuk poller yang melakukan ekspor.

   Ikuti langkah-langkah yang tercantum [di sini GitHub]( https://github.com/awslabs/amazon-neptune-tools/blob/master/export-neptune-to-elasticsearch/readme.md) untuk memulai ekspor satu kali data Neptunus Anda. OpenSearch

1. **Perbarui artefak Lambda untuk poller aliran yang ada.** Setelah ekspor data Neptunus OpenSearch berhasil diselesaikan, lakukan langkah-langkah berikut:
   + Di Konsol Manajemen AWS, navigasikan ke CloudFormation.
   + Pilih CloudFormation tumpukan induk utama.
   + Pilih opsi **Perbarui** untuk tumpukan itu.
   + Pilih **Ganti template saat ini dari opsi**.
   + Untuk sumber template, pilih URL **Amazon S3**.
   + Untuk URL Amazon S3, masukkan:

     ```
     https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json
     ```
   + Pilih **Berikutnya** tanpa mengubah CloudFormation parameter apa pun.
   + Pilih **Perbarui tumpukan**. CloudFormation akan mengganti artefak kode Lambda untuk poller aliran dengan artefak terbaru.

1. **Mulai poller aliran lagi.** Lakukan ini dengan mengaktifkan CloudWatch aturan yang sesuai:
   + Di Konsol Manajemen AWS, navigasikan ke CloudWatch.
   + Pilih **Aturan**.
   + Pilih aturan dengan nama poller aliran Lambda.
   + Pilih **aktifkan**.

# Memfilter bidang apa yang diindeks dalam pencarian teks lengkap Neptunus
Tidak termasuk bidang

Ada dua bidang dalam detail CloudFormation template yang memungkinkan Anda menentukan properti atau kunci predikat atau tipe data untuk dikecualikan dari pengindeksan: OpenSearch 

## Filter berdasarkan properti atau nama predikat
Filter berdasarkan nama

Anda dapat menggunakan parameter CloudFormation template opsional bernama `Properties to exclude from being inserted into Elastic Search Index` untuk menyediakan daftar properti atau kunci predikat yang dibatasi koma untuk dikecualikan dari pengindeksan. OpenSearch 

Misalnya, Anda menyetel parameter ini ke`bob`:

```
"Properties to exclude from being inserted into Elastic Search Index" : bob
```

Dalam hal ini, catatan aliran dari kueri pembaruan Gremlin berikut akan dihapus daripada masuk ke indeks:

```
g.V("1").property("bob", "test")
```

Demikian pula, Anda dapat mengatur parameter ke`http://my/example#bob`:

```
"Properties to exclude from being inserted into Elastic Search Index" : http://my/example#bob
```

Dalam hal ini, catatan aliran kueri pembaruan SPARQL berikut akan dihapus daripada masuk ke indeks:

```
PREFIX ex: <http://my/example#>
INSERT DATA { ex:s1 ex:bob "test"}.
```

Jika Anda tidak memasukkan apa pun dalam parameter CloudFormation template ini, semua kunci properti yang tidak dikecualikan akan diindeks.

## Filter berdasarkan properti atau jenis nilai predikat
Filter berdasarkan tipe data

Anda dapat menggunakan parameter CloudFormation template opsional bernama `Datatypes to exclude from being inserted into Elastic Search Index` untuk menyediakan daftar properti yang dibatasi koma atau tipe data nilai predikat untuk dikecualikan dari pengindeksan. OpenSearch 

Untuk SPARQL, Anda tidak perlu mencantumkan URI tipe XSD lengkap, Anda cukup mencantumkan token tipe data. Token tipe data yang valid yang dapat Anda daftarkan adalah:
+ `string`
+ `boolean`
+ `float`
+ `double`
+ `dateTime`
+ `date`
+ `time`
+ `byte`
+ `short`
+ `int`
+ `long`
+ `decimal`
+ `integer`
+ `nonNegativeInteger`
+ `nonPositiveInteger`
+ `negativeInteger`
+ `unsignedByte`
+ `unsignedShort`
+ `unsignedInt`
+ `unsignedLong`

Untuk Gremlin, tipe data yang valid untuk dicantumkan adalah:
+ `string`
+ `date`
+ `bool`
+ `byte`
+ `short`
+ `int`
+ `long`
+ `float`
+ `double`

Misalnya, Anda menyetel parameter ini ke`string`:

```
"Datatypes to exclude from being inserted into Elastic Search Index" : string
```

Dalam hal ini, catatan aliran dari kueri pembaruan Gremlin berikut akan dihapus daripada masuk ke indeks:

```
g.V("1").property("myStringval", "testvalue")
```

Demikian pula, Anda dapat mengatur parameter ke`int`:

```
"Datatypes to exclude from being inserted into Elastic Search Index" : int
```

Dalam hal ini, catatan aliran kueri pembaruan SPARQL berikut akan dihapus daripada masuk ke indeks:

```
PREFIX ex: <http://my/example#>
PREFIX xsd:<http://www.w3.org/2001/XMLSchema#>
INSERT DATA { ex:s1 ex:bob "11"^^xsd:int }.
```

Jika Anda tidak memasukkan apa pun dalam parameter CloudFormation template ini, semua properti yang nilainya dapat dikonversi dengan aman ke OpenSearch ekuivalen akan diindeks. Jenis terdaftar yang tidak didukung oleh bahasa kueri diabaikan.

# Pemetaan tipe data SPARQL dan Gremlin ke OpenSearch
Pemetaan tipe data

Pemetaan tipe data baru dibuat berdasarkan tipe data OpenSearch yang digunakan di properti atau objek. Karena beberapa bidang berisi nilai dari jenis yang berbeda, pemetaan awal mungkin mengecualikan beberapa nilai bidang.

Tipe data Neptunus memetakan ke tipe data sebagai berikut: OpenSearch 


| Jenis SPARQL | Jenis Gremlin | OpenSearch jenis | 
| --- | --- | --- | 
|  `XSD:int` `XSD:unsignedInt` `XSD:integer` `XSD:byte` `XSD:unsignedByte` `XSD:short` `XSD:unsignedShort` `XSD:long` `XSD:unsignedLong`  |  `byte` `short` `int` `long`  | `long` | 
|  `XSD:float` `XSD:double` `XSD:decimal`  |  `float` `double`  | `double` | 
| `XSD:boolean` | `bool` | `boolean` | 
|  `XSD:datetime` `XSD:date`  | `date` | `date` | 
|  `XSD:string` `XSD:time`  | `string` | `text` | 
| *Jenis data khusus* | *N/A* | `text` | 
| *Tipe data lainnya* | *N/A* | `text` | 

Misalnya, kueri pembaruan Gremlin berikut menyebabkan pemetaan baru untuk “NewField” ditambahkan, yaitu: OpenSearch `{ "type" : "double" }`

```
g.V("1").property("newField" 10.5)
```

Demikian pula, kueri pembaruan SPARQL berikut menyebabkan pemetaan baru untuk “ex:byte” ditambahkan, yaitu: OpenSearch `{ "type" : "long" }`

```
PREFIX ex: <http://my/example#>
PREFIX xsd:<http://www.w3.org/2001/XMLSchema#>

INSERT DATA { ex:test ex:byte "123"^^xsd:byte }.
```

**catatan**  
Seperti yang Anda lihat, item yang dipetakan dari Neptunus OpenSearch ke mungkin berakhir dengan tipe data yang berbeda dari yang ada di OpenSearch Neptunus. Namun, ada bidang teks eksplisit di OpenSearch, “datatype”, yang mencatat tipe data yang dimiliki item tersebut di Neptunus.

# Validasi pemetaan data
Validasi tipe data



Data direplikasi OpenSearch dari Neptunus menggunakan proses ini:
+ Jika pemetaan untuk bidang yang dimaksud sudah ada di OpenSearch:
  + Jika data dapat dikonversi dengan aman ke pemetaan yang ada menggunakan aturan validasi data, maka simpan bidang tersebut. OpenSearch
  + Jika tidak, jatuhkan catatan pembaruan aliran yang sesuai.
+ Jika tidak ada pemetaan yang ada untuk bidang yang dimaksud, temukan OpenSearch tipe data yang sesuai dengan tipe data bidang di Neptunus.
  + Jika data bidang dapat dikonversi dengan aman ke OpenSearch tipe data menggunakan aturan validasi data, maka simpan data pemetaan dan bidang baru di. OpenSearch
  + Jika tidak, jatuhkan catatan pembaruan aliran yang sesuai.

Nilai divalidasi terhadap OpenSearch tipe yang setara atau OpenSearch pemetaan yang ada daripada tipe Neptunus. Misalnya, validasi untuk nilai `"123"` dalam `"123"^^xsd:int` dilakukan terhadap `long` tipe daripada `int` tipe.

Meskipun Neptunus mencoba mereplikasi semua data OpenSearch, ada kasus di mana tipe data sama sekali berbeda dari yang ada OpenSearch di Neptunus, dan dalam kasus seperti itu catatan dilewati daripada diindeks. OpenSearch

Misalnya, di Neptunus satu properti dapat memiliki beberapa nilai dari jenis yang berbeda, sedangkan OpenSearch di bidang harus memiliki tipe yang sama di seluruh indeks.

Dengan mengaktifkan log debug, Anda dapat melihat catatan apa yang telah dijatuhkan selama ekspor dari Neptunus ke. OpenSearch Contoh entri log debug adalah:

```
Dropping Record : Data type not a valid Gremlin type 
<Record>
```

Tipe data divalidasi sebagai berikut:
+ **`text`**— Semua nilai di Neptunus dapat dengan aman dipetakan ke teks. OpenSearch
+ **`long`**— Aturan berikut untuk tipe data Neptunus berlaku ketika OpenSearch tipe pemetaan panjang (dalam contoh di bawah ini, diasumsikan memiliki tipe pemetaan): `"testLong"` `long`
  + `boolean`— Tidak valid, tidak dapat dikonversi, dan catatan pembaruan aliran yang sesuai dijatuhkan.

    Contoh Gremlin yang tidak valid adalah:

    ```
      "testLong" : true.
      "testLong" : false.
    ```

    Contoh SPARQL yang tidak valid adalah:

    ```
      ":testLong" : "true"^^xsd:boolean
      ":testLong" : "false"^^xsd:boolean
    ```
  + `datetime`— Tidak valid, tidak dapat dikonversi, dan catatan pembaruan aliran yang sesuai dijatuhkan.

    Contoh Gremlin yang tidak valid adalah:

    ```
      ":testLong" :  datetime('2018-11-04T00:00:00').
    ```

    Contoh SPARQL yang tidak valid adalah:

    ```
      ":testLong" : "2016-01-01"^^xsd:date
    ```
  + `float`,`double`, atau `decimal` — Jika nilai di Neptunus adalah bilangan bulat yang dapat muat dalam 64 bit, itu valid dan disimpan OpenSearch dalam panjang, tetapi jika memiliki bagian pecahan, atau adalah a atau, atau lebih besar dari 9.223.372.036.854.775.807 atau lebih kecil dari -9.223.372.372.036,854.775.808, maka tidak valid dan catatan pembaruan aliran yang sesuai dijatuhkan. `NaN` `INF`

    Contoh Gremlin yang valid adalah:

    ```
      "testLong" :  145.0.
      ":testLong" :  123
      ":testLong" :  -9223372036854775807
    ```

    Contoh SPARQL yang valid adalah:

    ```
      ":testLong" : "145.0"^^xsd:float
      ":testLong" :  145.0
      ":testLong" : "145.0"^^xsd:double
      ":testLong" : "145.0"^^xsd:decimal
      ":testLong" : "-9223372036854775807"
    ```

    Contoh Gremlin yang tidak valid adalah:

    ```
      "testLong" :  123.45
      ":testLong" :  9223372036854775900
    ```

    Contoh SPARQL yang tidak valid adalah:

    ```
      ":testLong" :  123.45
      ":testLong" :  9223372036854775900
      ":testLong" : "123.45"^^xsd:float
      ":testLong" : "123.45"^^xsd:double
      ":testLong" : "123.45"^^xsd:decimal
    ```
  + `string`— Jika nilai di Neptunus adalah representasi string dari bilangan bulat yang dapat terkandung dalam integer 64-bit, maka itu valid dan dikonversi ke dalam. `long` OpenSearch Nilai string lainnya tidak valid untuk `long` pemetaan Elasticseearch, dan catatan pembaruan aliran yang sesuai dihapus.

    Contoh Gremlin yang valid adalah:

    ```
      "testLong" :  "123".
      ":testLong" :  "145.0"
      ":testLong" :  "-9223372036854775807"
    ```

    Contoh SPARQL yang valid adalah:

    ```
      ":testLong" : "145.0"^^xsd:string
      ":testLong" : "-9223372036854775807"^^xsd:string
    ```

    Contoh Gremlin yang tidak valid adalah:

    ```
      "testLong" :  "123.45"
      ":testLong" :  "9223372036854775900"
      ":testLong" :  "abc"
    ```

    Contoh SPARQL yang tidak valid adalah:

    ```
      ":testLong" : "123.45"^^xsd:string
      ":testLong" : "abc"
      ":testLong" : "9223372036854775900"^^xsd:string
    ```
+ **`double`**— Jika jenis OpenSearch pemetaannya`double`, aturan berikut berlaku (di sini, bidang “testDouble” diasumsikan memiliki `double` pemetaan): OpenSearch
  + `boolean`— Tidak valid, tidak dapat dikonversi, dan catatan pembaruan aliran yang sesuai dijatuhkan.

    Contoh Gremlin yang tidak valid adalah:

    ```
      "testDouble" : true.
      "testDouble" : false.
    ```

    Contoh SPARQL yang tidak valid adalah:

    ```
      ":testDouble" : "true"^^xsd:boolean
      ":testDouble" : "false"^^xsd:boolean
    ```
  + `datetime`— Tidak valid, tidak dapat dikonversi, dan catatan pembaruan aliran yang sesuai dijatuhkan.

    Contoh Gremlin yang tidak valid adalah:

    ```
      ":testDouble" :  datetime('2018-11-04T00:00:00').
    ```

    Contoh SPARQL yang tidak valid adalah:

    ```
      ":testDouble" : "2016-01-01"^^xsd:date
    ```
  + Floating-point `NaN` atau `INF` — Jika nilai di SPARQL adalah floating-point `NaN` atau`INF`, maka itu tidak valid dan catatan pembaruan aliran yang sesuai dijatuhkan.

    Contoh SPARQL yang tidak valid adalah:

    ```
    "  :testDouble" : "NaN"^^xsd:float
      ":testDouble" : "NaN"^^double
      ":testDouble" : "INF"^^double
      ":testDouble" : "-INF"^^double
    ```
  + bilangan atau string numerik — Jika nilai di Neptunus adalah bilangan lain atau representasi string numerik dari numnber yang dapat dinyatakan dengan aman sebagai a, maka nilai tersebut valid dan dikonversi menjadi `double` a in. `double` OpenSearch Nilai string lainnya tidak valid untuk OpenSearch `double` pemetaan, dan catatan pembaruan aliran yang sesuai dijatuhkan.

    Contoh Gremlin yang valid adalah:

    ```
      "testDouble" :  123
      ":testDouble" :  "123"
      ":testDouble" :  145.67
      ":testDouble" :  "145.67"
    ```

    Contoh SPARQL yang valid adalah:

    ```
      ":testDouble" :  123.45
      ":testDouble" :  145.0
      ":testDouble" : "123.45"^^xsd:float
      ":testDouble" : "123.45"^^xsd:double
      ":testDouble" : "123.45"^^xsd:decimal
      ":testDouble" : "123.45"^^xsd:string
    ```

    Contoh Gremlin yang tidak valid adalah:

    ```
      ":testDouble" :  "abc"
    ```

    Contoh SPARQL yang tidak valid adalah:

    ```
      ":testDouble" : "abc"
    ```
+ **`date`**— Jika jenis OpenSearch pemetaannya`date`, `date` Neptunus `dateTime` dan nilainya valid, seperti halnya nilai string apa pun yang berhasil diuraikan ke format. `dateTime`

  Contoh yang valid di Gremlin atau SPARQL adalah:

  ```
    Date(2016-01-01)
    "2016-01-01" "
    2003-09-25T10:49:41"
    "2003-09-25T10:49"
    "2003-09-25T10"
    "20030925T104941-0300"
    "20030925T104941"
    "2003-Sep-25" "
    Sep-25-2003"
    "2003.Sep.25"
    "2003/09/25"
    "2003 Sep 25" "
    Wed, July 10, '96"
    "Tuesday, April 12, 1952 AD 3:30:42pm PST"
    "123"
    "-123"
    "0"
    "-0"
    "123.00"
    "-123.00"
  ```

  Contoh yang tidak valid adalah:

  ```
    123.45
    True
    "abc"
  ```

# Contoh OpenSearch kueri non-string di Neptunus
Kueri Sampel

Neptunus saat ini tidak OpenSearch mendukung kueri jangkauan secara langsung. Namun, Anda dapat mencapai efek yang sama menggunakan sintaks Lucene dan query-type="query\$1string”, seperti yang dapat Anda lihat dalam contoh kueri berikut.

## Dapatkan semua simpul dengan usia lebih dari 30 dan nama dimulai dengan “Si”
Contoh kueri 1

Di Gremlin:

```
g.withSideEffect('Neptune#fts.endpoint', 'http://your-es-endpoint')
 .withSideEffect("Neptune#fts.queryType", "query_string")
 .V().has('*', 'Neptune#fts predicates.age.value:>30 && predicates.name.value:Si*');
```

Di SPARQL:

```
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX neptune-fts: <http://aws.amazon.com/neptune/vocab/v01/services/fts#>
SELECT * WHERE {
  SERVICE neptune-fts:search {
    neptune-fts:config neptune-fts:endpoint 'http://localhost:9200' .
    neptune-fts:config neptune-fts:queryType 'query_string' .
    neptune-fts:config neptune-fts:query "predicates.\\*foaf\\*age.value:>30 AND predicates.\\*foaf\\*name.value:Si*" .
    neptune-fts:config neptune-fts:field '*' .
    neptune-fts:config neptune-fts:return ?res .
  }
}
```

Di sini, `"\\*foaf\\*age` digunakan sebagai pengganti URI penuh untuk singkatnya. Ekspresi reguler ini akan mengambil semua bidang memiliki keduanya `foaf` dan `age` dalam URI.

## Dapatkan semua node dengan usia antara 10 dan 50 dan nama dengan kecocokan fuzzy dengan “Ronka”
Contoh kueri 2

Di Gremlin:

```
g.withSideEffect('Neptune#fts.endpoint', 'http://your-es-endpoint')
 .withSideEffect("Neptune#fts.queryType", "query_string")
 .V().has('*', 'Neptune#fts predicates.age.value:[10 TO 50] AND predicates.name.value:Ronka~');
```

Di SPARQL:

```
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX neptune-fts: <http://aws.amazon.com/neptune/vocab/v01/services/fts#>
SELECT * WHERE {
  SERVICE neptune-fts:search {
    neptune-fts:config neptune-fts:endpoint 'http://localhost:9200' .
    neptune-fts:config neptune-fts:queryType 'query_string' .
    neptune-fts:config neptune-fts:query "predicates.\\*foaf\\*age.value:[10 TO 50] AND predicates.\\*foaf\\*name.value:Ronka~" .
    neptune-fts:config neptune-fts:field '*' .
    neptune-fts:config neptune-fts:return ?res .
  }
}
```

## Dapatkan semua node dengan stempel waktu yang jatuh dalam 25 hari terakhir
Contoh kueri 3

Di Gremlin:

```
g.withSideEffect('Neptune#fts.endpoint', 'http://your-es-endpoint')
 .withSideEffect("Neptune#fts.queryType", "query_string")
 .V().has('*', 'Neptune#fts predicates.timestamp.value:>now-25d');
```

Di SPARQL:

```
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX neptune-fts: <http://aws.amazon.com/neptune/vocab/v01/services/fts#>
SELECT * WHERE {
SELECT * WHERE {
  SERVICE neptune-fts:search {
    neptune-fts:config neptune-fts:endpoint 'http://localhost:9200' .
    neptune-fts:config neptune-fts:queryType 'query_string' .
    neptune-fts:config neptune-fts:query "predicates.\\*foaf\\*timestamp.value:>now-25d~" .
    neptune-fts:config neptune-fts:field '*' .
    neptune-fts:config neptune-fts:return ?res .
  }
}
```

## Dapatkan semua node dengan stempel waktu yang termasuk dalam tahun dan bulan tertentu
Contoh kueri 4

Di Gremlin, menggunakan [ekspresi matematika tanggal](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/common-options.html#date-math) dalam sintaks Lucene, untuk Desember 2020:

```
g.withSideEffect('Neptune#fts.endpoint', 'http://your-es-endpoint')
 .withSideEffect("Neptune#fts.queryType", "query_string")
 .V().has('*', 'Neptune#fts predicates.timestamp.value:>2020-12');
```

Alternatif Gremlin:

```
g.withSideEffect('Neptune#fts.endpoint', 'http://your-es-endpoint')
 .withSideEffect("Neptune#fts.queryType", "query_string")
 .V().has('*', 'Neptune#fts predicates.timestamp.value:[2020-12 TO 2021-01]');
```

# Full-text-search eksekusi kueri di Amazon Neptunus
Full-text-search eksekusi kueri

Dalam kueri yang menyertakan full-text-search, Neptunus mencoba untuk menempatkan panggilan terlebih dahulu, sebelum bagian lain full-text-search dari kueri. Ini mengurangi jumlah panggilan ke OpenSearch dan dalam banyak kasus secara signifikan meningkatkan kinerja. Namun, ini sama sekali bukan hard-and-fast aturan. Ada situasi, misalnya, di mana `PatternNode` atau `UnionNode` dapat mendahului panggilan pencarian teks lengkap.

Pertimbangkan kueri Gremlin berikut ke basis data yang berisi 100.000 instans `Person`:

```
g.withSideEffect('Neptune#fts.endpoint', 'your-es-endpoint-URL')
 .hasLabel('Person')
 .has('name', 'Neptune#fts marcello~');
```

Jika kueri ini dijalankan dalam urutan di mana langkah-langkah muncul maka 100.000 solusi akan mengalir ke OpenSearch, menyebabkan ratusan OpenSearch panggilan. Faktanya, Neptunus OpenSearch memanggil terlebih dahulu dan kemudian bergabung dengan hasil Neptunus. Dalam kebanyakan kasus, ini jauh lebih cepat daripada mengeksekusi kueri dalam urutan asli.

Anda dapat mencegah pengurutan ulang eksekusi langkah kueri ini menggunakan [petunjuk kueri noReordering](gremlin-query-hints-noReordering.md):

```
g.withSideEffect('Neptune#fts.endpoint', 'your-es-endpoint-URL')
 .withSideEffect('Neptune#noReordering', true)
 .hasLabel('Person')
 .has('name', 'Neptune#fts marcello~');
```

Dalam kasus kedua ini, langkah `.hasLabel` dijalankan terlebih dulu dan langkah `.has('name', 'Neptune#fts marcello~')` setelahnya.

Untuk contoh lain, pertimbangkan kueri SPARQL terhadap jenis data yang sama:

```
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX neptune-fts: <http://aws.amazon.com/neptune/vocab/v01/services/fts#>
SELECT ?person WHERE {
  ?person rdf:type foaf:Person .
  SERVICE neptune-fts:search {
    neptune-fts:config neptune-fts:endpoint 'http://your-es-endpoint.com' .
    neptune-fts:config neptune-fts:field foaf:name .
    neptune-fts:config neptune-fts:query 'mike' .
    neptune-fts:config neptune-fts:return ?person .
  }
}
```

Di sini sekali lagi, Neptune mengeksekusi bagian `SERVICE` dari kueri terlebih dulu, dan kemudian menggabungkan hasil dengan data `Person`. Anda dapat menekan perilaku ini menggunakan [petunjuk kueri joinOrder](sparql-query-hints-joinOrder.md):

```
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX neptune-fts: <http://aws.amazon.com/neptune/vocab/v01/services/fts#>
PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#>
SELECT ?person WHERE {
  hint:Query hint:joinOrder "Ordered" .
  ?person rdf:type foaf:Person .
  SERVICE neptune-fts:search {
    neptune-fts:config neptune-fts:endpoint 'http://your-es-endpoint.com' .
    neptune-fts:config neptune-fts:field foaf:name .
    neptune-fts:config neptune-fts:query 'mike' .
    neptune-fts:config neptune-fts:return ?person .
  }
}
```

Sekali lagi, dalam kueri kedua, bagian-bagian dieksekusi dalam urutan kemunculan mereka dalam kueri.

**catatan**  
 Menanyakan alias opensearch melalui indeks, alih-alih secara langsung menanyakan indeks opensearch dapat menghasilkan hasil yang salah. Anda harus menanyakan indeks opensearch secara langsung dan bukan alias. 

# Contoh kueri SPARQL menggunakan pencarian teks lengkap di Neptunus
Contoh permintaan pencarian teks lengkap SPARQL

Berikut ini adalah beberapa contoh kueri SPARQL yang menggunakan pencarian teks lengkap di Amazon Neptune.

## Contoh kueri pencocokan SPARQL
Kueri pencocokan

```
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX neptune-fts: <http://aws.amazon.com/neptune/vocab/v01/services/fts#>
SELECT * WHERE {
  SERVICE neptune-fts:search {
    neptune-fts:config neptune-fts:endpoint 'http://your-es-endpoint.com' .
    neptune-fts:config neptune-fts:queryType 'match' .
    neptune-fts:config neptune-fts:field foaf:name .
    neptune-fts:config neptune-fts:query 'michael' .
    neptune-fts:config neptune-fts:return ?res .
  }
}
```

## Contoh kueri awalan SPARQL
prefix

```
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX neptune-fts: <http://aws.amazon.com/neptune/vocab/v01/services/fts#>
SELECT * WHERE {
  SERVICE neptune-fts:search {
    neptune-fts:config neptune-fts:endpoint 'http://your-es-endpoint.com' .
    neptune-fts:config neptune-fts:queryType 'prefix' .
    neptune-fts:config neptune-fts:field foaf:name .
    neptune-fts:config neptune-fts:query 'mich' .
    neptune-fts:config neptune-fts:return ?res .
  }
}
```

## Contoh kueri fuzzy SPARQL
fuzzy

```
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX neptune-fts: <http://aws.amazon.com/neptune/vocab/v01/services/fts#>
SELECT * WHERE {
  SERVICE neptune-fts:search {
    neptune-fts:config neptune-fts:endpoint 'http://your-es-endpoint.com' .
    neptune-fts:config neptune-fts:queryType 'fuzzy' .
    neptune-fts:config neptune-fts:field foaf:name .
    neptune-fts:config neptune-fts:query 'mikael' .
    neptune-fts:config neptune-fts:return ?res .
  }
}
```

## Contoh kueri istilah SPARQL
term

```
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX neptune-fts: <http://aws.amazon.com/neptune/vocab/v01/services/fts#>
SELECT * WHERE {
  SERVICE neptune-fts:search {
    neptune-fts:config neptune-fts:endpoint 'http://your-es-endpoint.com' .
    neptune-fts:config neptune-fts:queryType 'term' .
    neptune-fts:config neptune-fts:field foaf:name .
    neptune-fts:config neptune-fts:query 'Dr. Kunal' .
    neptune-fts:config neptune-fts:return ?res .
  }
}
```

## Contoh kueri query\$1string SPARQL
query\$1string

Kueri ini menentukan beberapa bidang.

```
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX neptune-fts: <http://aws.amazon.com/neptune/vocab/v01/services/fts#>
SELECT * WHERE {
  SERVICE neptune-fts:search {
    neptune-fts:config neptune-fts:endpoint 'http://your-es-endpoint.com' .
    neptune-fts:config neptune-fts:queryType 'query_string' .
    neptune-fts:config neptune-fts:query 'mikael~ OR rondelli' .
    neptune-fts:config neptune-fts:field foaf:name .
    neptune-fts:config neptune-fts:field foaf:surname .
    neptune-fts:config neptune-fts:return ?res .
  }
}
```

## Contoh kueri SPARQL simple\$1query\$1string
simple\$1query\$1string

Kueri berikut menentukan bidang menggunakan karakter wildcard ('\$1').

```
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX neptune-fts: <http://aws.amazon.com/neptune/vocab/v01/services/fts#>
SELECT * WHERE {
  SERVICE neptune-fts:search {
    neptune-fts:config neptune-fts:endpoint 'http://your-es-endpoint.com' .
    neptune-fts:config neptune-fts:queryType 'simple_query_string' .
    neptune-fts:config neptune-fts:query 'mikael~ | rondelli' .
    neptune-fts:config neptune-fts:field '*' .
    neptune-fts:config neptune-fts:return ?res .
  }
}
```

## SPARQL urutkan berdasarkan contoh kueri bidang string
urutkan berdasarkan bidang string

```
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX neptune-fts: <http://aws.amazon.com/neptune/vocab/v01/services/fts#>
SELECT * WHERE {
  SERVICE neptune-fts:search {
    neptune-fts:config neptune-fts:endpoint 'http://your-es-endpoint' .
    neptune-fts:config neptune-fts:queryType 'query_string' .
    neptune-fts:config neptune-fts:query 'mikael~ | rondelli' .
    neptune-fts:config neptune-fts:field foaf:name .
    neptune-fts:config neptune-fts:sortOrder 'asc' .
    neptune-fts:config neptune-fts:sortBy foaf:name .
    neptune-fts:config neptune-fts:return ?res .
  }
}
```

## SPARQL urutkan berdasarkan contoh kueri bidang non-string
urutkan berdasarkan bidang non-string

```
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX neptune-fts: <http://aws.amazon.com/neptune/vocab/v01/services/fts#>
SELECT * WHERE {
  SERVICE neptune-fts:search {
    neptune-fts:config neptune-fts:endpoint 'http://your-es-endpoint' .
    neptune-fts:config neptune-fts:queryType 'query_string' .
    neptune-fts:config neptune-fts:query 'mikael~ | rondelli' .
    neptune-fts:config neptune-fts:field foaf:name.value .
    neptune-fts:config neptune-fts:sortOrder 'asc' .
    neptune-fts:config neptune-fts:sortBy dc:date.value .
    neptune-fts:config neptune-fts:return ?res .
  }
}
```

## SPARQL urutkan berdasarkan contoh kueri ID
urutkan berdasarkan ID

```
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX neptune-fts: <http://aws.amazon.com/neptune/vocab/v01/services/fts#>
SELECT * WHERE {
  SERVICE neptune-fts:search {
    neptune-fts:config neptune-fts:endpoint 'http://your-es-endpoint' .
    neptune-fts:config neptune-fts:queryType 'query_string' .
    neptune-fts:config neptune-fts:query 'mikael~ | rondelli' .
    neptune-fts:config neptune-fts:field foaf:name .
    neptune-fts:config neptune-fts:sortOrder 'asc' .
    neptune-fts:config neptune-fts:sortBy 'Neptune#fts.entity_id' .
    neptune-fts:config neptune-fts:return ?res .
  }
}
```

## SPARQL urutkan berdasarkan contoh kueri label
urutkan berdasarkan label

```
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX neptune-fts: <http://aws.amazon.com/neptune/vocab/v01/services/fts#>
SELECT * WHERE {
  SERVICE neptune-fts:search {
    neptune-fts:config neptune-fts:endpoint 'http://your-es-endpoint' .
    neptune-fts:config neptune-fts:queryType 'query_string' .
    neptune-fts:config neptune-fts:query 'mikael~ | rondelli' .
    neptune-fts:config neptune-fts:field foaf:name .
    neptune-fts:config neptune-fts:sortOrder 'asc' .
    neptune-fts:config neptune-fts:sortBy 'Neptune#fts.entity_type' .
    neptune-fts:config neptune-fts:return ?res .
  }
}
```

## SPARQL urutkan berdasarkan contoh kueri doc\$1type
urutkan berdasarkan doc\$1type

```
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX neptune-fts: <http://aws.amazon.com/neptune/vocab/v01/services/fts#>
SELECT * WHERE {
  SERVICE neptune-fts:search {
    neptune-fts:config neptune-fts:endpoint 'http://your-es-endpoint' .
    neptune-fts:config neptune-fts:queryType 'query_string' .
    neptune-fts:config neptune-fts:query 'mikael~ | rondelli' .
    neptune-fts:config neptune-fts:field foaf:name .
    neptune-fts:config neptune-fts:sortOrder 'asc' .
    neptune-fts:config neptune-fts:sortBy 'Neptune#fts.document_type' .
    neptune-fts:config neptune-fts:return ?res .
  }
}
```

## Contoh menggunakan sintaks Lucene di SPARQL
Sintaks Lucene

Sintaks Lucene hanya didukung untuk `query_string` kueri di. OpenSearch

```
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX neptune-fts: <http://aws.amazon.com/neptune/vocab/v01/services/fts#>
SELECT * WHERE {
  SERVICE neptune-fts:search {
    neptune-fts:config neptune-fts:endpoint 'http://your-es-endpoint' .
    neptune-fts:config neptune-fts:queryType 'query_string' .
    neptune-fts:config neptune-fts:queryType 'query_string' .
    neptune-fts:config neptune-fts:query 'predicates.\\foaf\\name.value:micheal AND predicates.\\foaf\\surname.value:sh' .
    neptune-fts:config neptune-fts:field ‘’ .
    neptune-fts:config neptune-fts:return ?res .
  }
}
```

# Menggunakan pencarian teks lengkap Neptunus dalam kueri Gremlin
Contoh permintaan pencarian teks lengkap Gremlin

`NeptuneSearchStep` memungkinkan kueri pencarian teks lengkap untuk bagian dari traversal Gremlin yang tidak diubah menjadi langkah-langkah Neptune. Contohnya, pertimbangkan kueri berikut ini.

```
g.withSideEffect("Neptune#fts.endpoint", "your-es-endpoint-URL")
  .V()
      .tail(100)
      .has("name", "Neptune#fts mark*")            <== # Limit the search on name
```

Kueri ini diubah menjadi traversal yang dioptimalkan berikut di Neptune.

```
Neptune steps:
[
    NeptuneGraphQueryStep(Vertex) {
        JoinGroupNode {
            PatternNode[(?1, <~label>, ?2, <~>) . project distinct ?1 .], {estimatedCardinality=INFINITY}
        }, annotations={path=[Vertex(?1):GraphStep], maxVarId=4}
    },
    NeptuneTraverserConverterStep
]
+ not converted into Neptune steps: [NeptuneTailGlobalStep(100), NeptuneTinkerpopTraverserConverterStep, NeptuneSearchStep {
    JoinGroupNode {
        SearchNode[(idVar=?3, query=mark*, field=name) . project ask .], {endpoint=your-OpenSearch-endpoint-URL}
    }
    JoinGroupNode {
        SearchNode[(idVar=?3, query=mark*, field=name) . project ask .], {endpoint=your-OpenSearch-endpoint-URL}
    }
}]
```

Contoh berikut adalah dari kueri Gremlin terhadap data rute udara:

## Kueri dasar case-insensitive Gremlin `match`
Dasar `match`

```
g.withSideEffect("Neptune#fts.endpoint",
                 "your-OpenSearch-endpoint-URL")
  .withSideEffect('Neptune#fts.queryType', 'match')
  .V().has("city","Neptune#fts dallas")

==>v[186]
==>v[8]
```

## Permintaan Gremlin `match`
`match`

```
g.withSideEffect("Neptune#fts.endpoint",
                 "your-OpenSearch-endpoint-URL")
  .withSideEffect('Neptune#fts.queryType', 'match')
  .V().has("city","Neptune#fts southampton")
     .local(values('code','city').fold())
     .limit(5)

==>[SOU, Southampton]
```

## Permintaan Gremlin `fuzzy`
`fuzzy`

```
g.withSideEffect("Neptune#fts.endpoint",
                 "your-OpenSearch-endpoint-URL")
  .V().has("city","Neptune#fts allas~").values('city').limit(5)

==>Dallas
==>Dallas
==>Walla Walla
==>Velas
==>Altai
```

## Permintaan fuzzy Gremlin `query_string`
`query_string`kabur

```
g.withSideEffect("Neptune#fts.endpoint",
                 "your-OpenSearch-endpoint-URL")
  .withSideEffect('Neptune#fts.queryType', 'query_string')
  .V().has("city","Neptune#fts allas~").values('city').limit(5)

==>Dallas
==>Dallas
```

## Kueri ekspresi `query_string` reguler Gremlin
`query_string`regex

```
g.withSideEffect("Neptune#fts.endpoint",
                 "your-OpenSearch-endpoint-URL")
  .withSideEffect('Neptune#fts.queryType', 'query_string')
  .V().has("city","Neptune#fts /[dp]allas/").values('city').limit(5)

==>Dallas
==>Dallas
```

## Kueri hibrida Gremlin
Kueri hibrida

Kueri ini menggunakan indeks internal Neptunus dan indeks dalam kueri OpenSearch yang sama.

```
g.withSideEffect("Neptune#fts.endpoint",
                 "your-OpenSearch-endpoint-URL")
  .V().has("region","GB-ENG")
      .has('city','Neptune#fts L*')
      .values('city')
      .dedup()
      .limit(10)

==>London
==>Leeds
==>Liverpool
==>Land's End
```

## Contoh pencarian teks lengkap Gremlin sederhana
Contoh pencarian teks lengkap

```
g.withSideEffect("Neptune#fts.endpoint",
                 "your-OpenSearch-endpoint-URL")
  .V().has('desc','Neptune#fts regional municipal')
      .local(values('code','desc').fold())
      .limit(100)

==>[HYA, Barnstable Municipal Boardman Polando Field]
==>[SPS, Sheppard Air Force Base-Wichita Falls Municipal Airport]
==>[ABR, Aberdeen Regional Airport]
==>[SLK, Adirondack Regional Airport]
==>[BFD, Bradford Regional Airport]
==>[EAR, Kearney Regional Airport]
==>[ROT, Rotorua Regional Airport]
==>[YHD, Dryden Regional Airport]
==>[TEX, Telluride Regional Airport]
==>[WOL, Illawarra Regional Airport]
==>[TUP, Tupelo Regional Airport]
==>[COU, Columbia Regional Airport]
==>[MHK, Manhattan Regional Airport]
==>[BJI, Bemidji Regional Airport]
==>[HAS, Hail Regional Airport]
==>[ALO, Waterloo Regional Airport]
==>[SHV, Shreveport Regional Airport]
==>[ABI, Abilene Regional Airport]
==>[GIZ, Jizan Regional Airport]
==>[USA, Concord Regional Airport]
==>[JMS, Jamestown Regional Airport]
==>[COS, City of Colorado Springs Municipal Airport]
==>[PKB, Mid Ohio Valley Regional Airport]
```

## Kueri Gremlin menggunakan `query_string` Dengan Operator '\$1' dan '-'
`query_string`, '\$1' dan '-'

Meskipun jenis kueri `query_string` jauh lebih pemaaf dari jenis `simple_query_string` default, kueri tersebut memungkinkan kueri yang lebih tepat. Kueri pertama di bawah ini menggunakan `query_string`, sedangkan yang kedua menggunakan `simple_query_string` default:

```
g.withSideEffect("Neptune#fts.endpoint",
                 "your-OpenSearch-endpoint-URL")
  .withSideEffect('Neptune#fts.queryType', 'query_string')
 . V().has('desc','Neptune#fts +London -(Stansted|Gatwick)')
      .local(values('code','desc').fold())
      .limit(10)

==>[LHR, London Heathrow]
==>[YXU, London Airport]
==>[LTN, London Luton Airport]
==>[SEN, London Southend Airport]
==>[LCY, London City Airport]
```

Perhatikan bagaimana `simple_query_string` dalam contoh di bawah diam-diam mengabaikan operator '\$1' dan '-':

```
g.withSideEffect("Neptune#fts.endpoint",
                 "your-OpenSearch-endpoint-URL")
  .V().has('desc','Neptune#fts +London -(Stansted|Gatwick)')
      .local(values('code','desc').fold())
      .limit(10)

==>[LHR, London Heathrow]
==>[YXU, London Airport]
==>[LGW, London Gatwick]
==>[STN, London Stansted Airport]
==>[LTN, London Luton Airport]
==>[SEN, London Southend Airport]
==>[LCY, London City Airport]
==>[SKG, Thessaloniki Macedonia International Airport]
==>[ADB, Adnan Menderes International Airport]
==>[BTV, Burlington International Airport]
```

```
g.withSideEffect("Neptune#fts.endpoint",
                 "your-OpenSearch-endpoint-URL")
  .withSideEffect('Neptune#fts.queryType', 'query_string')
  .V().has('desc','Neptune#fts +(regional|municipal) -(international|bradford)')
      .local(values('code','desc').fold())
      .limit(10)

==>[CZH, Corozal Municipal Airport]
==>[MMU, Morristown Municipal Airport]
==>[YBR, Brandon Municipal Airport]
==>[RDD, Redding Municipal Airport]
==>[VIS, Visalia Municipal Airport]
==>[AIA, Alliance Municipal Airport]
==>[CDR, Chadron Municipal Airport]
==>[CVN, Clovis Municipal Airport]
==>[SDY, Sidney Richland Municipal Airport]
==>[SGU, St George Municipal Airport]
```

## `query_string`Permintaan Gremlin dengan `AND` dan operator `OR`
`query_string`, `AND` dan `OR`

```
g.withSideEffect("Neptune#fts.endpoint",
                 "your-OpenSearch-endpoint-URL")
  .withSideEffect('Neptune#fts.queryType', 'query_string')
  .V().has('desc','Neptune#fts (St AND George) OR (St AND Augustin)')
      .local(values('code','desc').fold())
      .limit(10)

==>[YIF, St Augustin Airport]
==>[STG, St George Airport]
==>[SGO, St George Airport]
==>[SGU, St George Municipal Airport]
```

## Permintaan Gremlin `term`
`term`

```
g.withSideEffect("Neptune#fts.endpoint",
                 "your-OpenSearch-endpoint-URL")
  .withSideEffect('Neptune#fts.queryType', 'term')
  .V().has("SKU","Neptune#fts ABC123DEF9")
      .local(values('code','city').fold())
      .limit(5)

==>[AUS, Austin]
```

## Permintaan Gremlin `prefix`
`prefix`

```
g.withSideEffect("Neptune#fts.endpoint",
                 "your-OpenSearch-endpoint-URL")
  .withSideEffect('Neptune#fts.queryType', 'prefix')
  .V().has("icao","Neptune#fts ka")
      .local(values('code','icao','city').fold())
      .limit(5)

==>[AZO, KAZO, Kalamazoo]
==>[APN, KAPN, Alpena]
==>[ACK, KACK, Nantucket]
==>[ALO, KALO, Waterloo]
==>[ABI, KABI, Abilene]
```

## Menggunakan sintaks Lucene di Neptunus Gremlin
Sintaks Lucene

Di Neptune Gremlin, Anda juga dapat menulis kueri yang sangat kuat menggunakan sintaks kueri Lucene. Perhatikan bahwa sintaks Lucene hanya didukung untuk `query_string` kueri di. OpenSearch

Asumsikan data berikut:

```
g.addV("person")
        .property(T.id, "p1")
        .property("name", "simone")
        .property("surname", "rondelli")

g.addV("person")
        .property(T.id, "p2")
        .property("name", "simone")
        .property("surname", "sengupta")

g.addV("developer")
        .property(T.id, "p3")
        .property("name", "simone")
        .property("surname", "rondelli")
```

Menggunakan sintaks Lucene, yang dipanggil ketika `queryType` adalah `query_string`, Anda dapat mencari data ini menurut nama dan nama keluarga sebagai berikut:

```
g.withSideEffect("Neptune#fts.endpoint", "es_endpoint")
    .withSideEffect("Neptune#fts.queryType", "query_string")
    .V()
    .has("*", "Neptune#fts predicates.name.value:simone AND predicates.surname.value:rondelli")

==> v[p1], v[p3]
```

Perhatikan bahwa dalam langkah `has()` di atas, bidangnya digantikan oleh `"*"`). Sebenarnya, setiap nilai yang ditempatkan di bidang tersebut diganti oleh bidang yang Anda akses dalam kueri. Anda mengakses bidang nama menggunakan `predicates.name.value,` karena itulah cara model data terstruktur.

Anda dapat mencari berdasarkan nama, nama keluarga, dan label, sebagai berikut:

```
g.withSideEffect("Neptune#fts.endpoint", getEsEndpoint())
    .withSideEffect("Neptune#fts.queryType", "query_string")
    .V()
    .has("*", "Neptune#fts predicates.name.value:simone AND predicates.surname.value:rondelli AND entity_type:person")

==> v[p1]
```

Label diakses menggunakan `entity_type`, sekali lagi karena itulah cara model data terstruktur.

Anda juga bisa memasukkan syarat nesting:

```
g.withSideEffect("Neptune#fts.endpoint", getEsEndpoint())
    .withSideEffect("Neptune#fts.queryType", "query_string")
    .V()
    .has("*", "Neptune#fts (predicates.name.value:simone AND predicates.surname.value:rondelli AND entity_type:person) OR predicates.surname.value:sengupta")

==> v[p1], v[p2]
```

## Memasukkan grafik modern TinkerPop
TinkerPop Grafik modern

```
g.addV('person').property(T.id, '1').property('name', 'marko').property('age', 29)
 .addV('personr').property(T.id, '2').property('name', 'vadas').property('age', 27)
 .addV('software').property(T.id, '3').property('name', 'lop').property('lang', 'java')
 .addV('person').property(T.id, '4').property('name', 'josh').property('age', 32)
 .addV('software').property(T.id, '5').property('name', 'ripple').property('lang', 'java')
 .addV('person').property(T.id, '6').property('name', 'peter').property('age', 35)

g.V('1').as('a').V('2').as('b').addE('knows').from('a').to('b').property('weight', 0.5f).property(T.id, '7')
 .V('1').as('a').V('3').as('b').addE('created').from('a').to('b').property('weight', 0.4f).property(T.id, '9')
 .V('4').as('a').V('3').as('b').addE('created').from('a').to('b').property('weight', 0.4f).property(T.id, '11')
 .V('4').as('a').V('5').as('b').addE('created').from('a').to('b').property('weight', 1.0f).property(T.id, '10')
 .V('6').as('a').V('3').as('b').addE('created').from('a').to('b').property('weight', 0.2f).property(T.id, '12')
 .V('1').as('a').V('4').as('b').addE('knows').from('a').to('b').property('weight', 1.0f).property(T.id, '8')
```

## Urutkan berdasarkan contoh nilai bidang string
Urutkan berdasarkan bidang string

```
g.withSideEffect("Neptune#fts.endpoint", "your-OpenSearch-endpoint-URL")
 .withSideEffect('Neptune#fts.queryType', 'query_string')
 .withSideEffect('Neptune#fts.sortOrder', 'asc')
 .withSideEffect('Neptune#fts.sortBy', 'name')
 .V().has('name', 'Neptune#fts marko OR vadas OR ripple')
```

## Urutkan berdasarkan contoh nilai bidang non-string
Urutkan berdasarkan bidang non-string

```
g.withSideEffect("Neptune#fts.endpoint", "your-OpenSearch-endpoint-URL")
 .withSideEffect('Neptune#fts.queryType', 'query_string')
 .withSideEffect('Neptune#fts.sortOrder', 'asc')
 .withSideEffect('Neptune#fts.sortBy', 'age.value')
 .V().has('name', 'Neptune#fts marko OR vadas OR ripple')
```

## Urutkan berdasarkan contoh nilai bidang ID
Urutkan berdasarkan bidang ID

```
g.withSideEffect("Neptune#fts.endpoint", "your-OpenSearch-endpoint-URL")
.withSideEffect('Neptune#fts.queryType', 'query_string')
.withSideEffect('Neptune#fts.sortOrder', 'asc')
.withSideEffect('Neptune#fts.sortBy', 'Neptune#fts.entity_id')
.V().has('name', 'Neptune#fts marko OR vadas OR ripple')
```

## Urutkan berdasarkan contoh nilai bidang label
Urutkan berdasarkan bidang label

```
g.withSideEffect("Neptune#fts.endpoint", "your-OpenSearch-endpoint-URL")
 .withSideEffect('Neptune#fts.queryType', 'query_string')
 .withSideEffect('Neptune#fts.sortOrder', 'asc')
 .withSideEffect('Neptune#fts.sortBy', 'Neptune#fts.entity_type')
 .V().has('name', 'Neptune#fts marko OR vadas OR ripple')
```

## Urutkan berdasarkan contoh nilai `document_type` bidang
Urutkan berdasarkan `document_type` bidang

```
g.withSideEffect("Neptune#fts.endpoint", "your-OpenSearch-endpoint-URL")
 .withSideEffect('Neptune#fts.queryType', 'query_string')
 .withSideEffect('Neptune#fts.sortOrder', 'asc')
 .withSideEffect('Neptune#fts.sortBy', 'Neptune#fts.document_type')
 .V().has('name', 'Neptune#fts marko OR vadas OR ripple')
```

# Memecahkan masalah pencarian teks lengkap Neptunus
Pemecahan masalah dan metrik

**catatan**  
Jika Anda telah mengaktifkan [kontrol akses berbutir halus](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/fgac.html) di OpenSearch cluster Anda, Anda perlu [mengaktifkan otentikasi IAM](iam-auth-enable.md) di database Neptunus Anda juga.

Untuk mendiagnosis masalah dengan replikasi dari Neptunus OpenSearch ke, lihat Log untuk fungsi Lambda CloudWatch poller Anda. Log ini memberikan rincian tentang jumlah catatan yang dibaca dari aliran dan jumlah catatan yang berhasil direplikasi. OpenSearch

Anda juga dapat mengubah tingkat LOGGING untuk fungsi Lambda Anda dengan mengubah variabel lingkungan `LoggingLevel`.

**catatan**  
Dengan `LoggingLevel` set to`DEBUG`, Anda dapat melihat detail tambahan, seperti catatan aliran yang dijatuhkan dan alasan mengapa masing-masing dijatuhkan, sambil mereplikasi data StreamPoller dari Neptunus ke. OpenSearch Ini dapat berguna jika Anda menemukan Anda kehilangan catatan.

Aplikasi konsumen streaming Neptunus menerbitkan dua metrik yang juga dapat membantu Anda mendiagnosis CloudWatch masalah:
+ `StreamRecordsProcessed` — Jumlah catatan yang diproses oleh aplikasi per satuan waktu. Bermanfaat dalam melacak tingkat run aplikasi.
+ `StreamLagTime` — Perbedaan waktu dalam milidetik antara waktu saat ini dan waktu komit catatan aliran sedang diproses. Metrik ini menunjukkan berapa banyak aplikasi konsumen yang tertinggal.

Selain itu, semua metrik yang terkait dengan proses replikasi diekspos di dasbor di CloudWatch bawah nama yang sama dengan yang `ApplicationName` disediakan saat Anda membuat instance aplikasi menggunakan templat. CloudWatch 

Anda juga dapat memilih untuk membuat CloudWatch alarm yang dipicu setiap kali polling gagal lebih dari dua kali berturut-turut. Lakukan ini dengan menetapkan bidang `CreateCloudWatchAlarm` ke `true` ketika Anda menginisiasi aplikasi. Setelah itu, tentukan alamat email yang ingin Anda beri tahu saat alarm dipicu.

## Pemecahan masalah proses yang gagal saat membaca catatan dari aliran
Membaca pemecahan masalah

Jika proses gagal saat membaca catatan dari aliran, pastikan bahwa Anda memiliki hal berikut:
+ Aliran diaktifkan pada klaster Anda.
+ Titik akhir aliran Neptune menggunakan format yang benar:
  + Untuk Gremlin atau OpenCypher: atau aliasnya, `https://your cluster endpoint:your cluster port/propertygraph/stream` `https://your cluster endpoint:your cluster port/pg/stream`
  + Untuk SPARQL: `https://your cluster endpoint:your cluster port/sparql/stream`

  
+ Titik akhir DynamoDB dikonfigurasi untuk VPC Anda.
+ Titik akhir pemantauan dikonfigurasi untuk subnet VPC Anda.

## Memecahkan masalah proses yang gagal saat menulis data OpenSearch
Menulis pemecahan masalah

Jika proses gagal saat menulis catatan OpenSearch, pastikan Anda memiliki yang berikut ini:
+ Versi Elasticsearch Anda adalah 7.1 atau lebih tinggi, atau Opensearch 2.3 dan di atasnya.
+ OpenSearch dapat diakses dari fungsi poller Lambda di VPC Anda.
+ Kebijakan keamanan yang dilampirkan untuk OpenSearch memungkinkan HTTP/HTTPS permintaan masuk.

## Memperbaiki out-of-sync masalah antara Neptunus OpenSearch dan pengaturan replikasi yang ada
Out-of-sync masalah

Anda dapat menggunakan langkah-langkah di bawah ini untuk mendapatkan database OpenSearch dan domain Neptunus kembali sinkron dengan data terbaru jika terjadi out-of-sync masalah di antara mereka yang disebabkan oleh korupsi `ExpiredStreamException` atau data.

Perhatikan bahwa pendekatan ini menghapus semua data dalam OpenSearch domain dan menyinkronkannya kembali dari status database Neptunus saat ini, jadi tidak ada data yang perlu dimuat ulang dalam database Neptunus.

1. Nonaktifkan proses replikasi seperti yang dijelaskan dalam [Menonaktifkan (menjeda) proses poller aliran.](full-text-search-pause-poller.md)

1. Hapus indeks Neptunus pada domain menggunakan OpenSearch perintah berikut:

   ```
   curl -X DELETE "(your OpenSearch endpoint)/amazon_neptune"
   ```

1. Buat klon database (lihat Kloning [Database di Neptunus](manage-console-cloning.md)).

1. Dapatkan yang terbaru `eventID` untuk aliran pada database kloning dengan menjalankan perintah semacam ini terhadap titik akhir Streams API (lihat Memanggil REST API [Neptunus Streams untuk](streams-using-api-call.md) informasi selengkapnya):

   ```
   curl "https://(your neptune endpoint):(port)/(propertygraph or sparql)/stream?iteratorType=LATEST"
   ```

   Catat nilai-nilai di `commitNum` dan `opNum` bidang di `lastEventId` objek dalam respons.

1. Gunakan [export-neptune-to-elasticsearch](https://github.com/awslabs/amazon-neptune-tools/tree/master/export-neptune-to-elasticsearch)alat di github untuk melakukan sinkronisasi satu kali dari database kloning ke domain. OpenSearch

1. Pergi ke tabel DynamoDB untuk tumpukan replikasi. Nama tabel akan menjadi **Nama Aplikasi** yang Anda tentukan dalam CloudFormation template (defaultnya adalah`NeptuneStream`) dengan `-LeaseTable` akhiran. Dengan kata lain, nama tabel default adalah`NeptuneStream-LeaseTable`.

   Anda dapat menjelajahi baris tabel dengan memindai karena seharusnya hanya ada satu baris dalam tabel. Buat perubahan berikut menggunakan `commitNum` dan `opNum` nilai yang Anda rekam di atas:
   + Ubah nilai untuk `checkpoint` bidang dalam tabel ke nilai yang Anda catat`commitNum`.
   + Ubah nilai untuk `checkpointSubSequenceNumber` bidang dalam tabel ke nilai yang Anda catat`opNum`.

1. Aktifkan kembali proses replikasi seperti yang dijelaskan dalam [Mengaktifkan kembali proses poller aliran.](full-text-search-re-enable-poller.md)

1. Hapus database kloning dan CloudFormation tumpukan yang dibuat untuk `export-neptune-to-elasticsearch` alat ini.