All Products
Search
Document Center

OpenSearch:Pencarian gulir

Last Updated:Aug 22, 2026

Pencarian scroll mengambil set hasil yang besar dengan melakukan iterasi melalui batch dokumen yang cocok. Berbeda dengan pencarian biasa yang mengembalikan paling banyak 5.000 dokumen, pencarian scroll dirancang untuk mengambil lebih banyak hasil melebihi batas tersebut.

Pencarian scroll dirancang untuk tugas pemrosesan batch seperti ekspor data, analitik, dan pekerjaan pembelajaran mesin—bukan untuk kueri pengguna real-time atau interaktif. Untuk set hasil yang berisi kurang dari 5.000 dokumen, gunakan pencarian biasa sebagai gantinya.

Cara kerja pencarian scroll

Pencarian scroll berjalan dalam dua tahap:

  1. Initiate the scroll — Kirim permintaan pencarian dengan search_type=scan dan parameter scroll. Responsnya mengembalikan scroll ID tetapi tidak mengembalikan dokumen.

  2. Retrieve batches — Gunakan scroll ID dari respons sebelumnya untuk mengambil batch dokumen berikutnya. Ulangi hingga array items dalam respons kosong.

Setiap scroll ID berlaku selama durasi yang ditentukan oleh parameter scroll. Jika Anda tidak mengambil batch berikutnya sebelum scroll ID kedaluwarsa, sesi scroll berakhir dan Anda harus memulai ulang dari langkah 1.

Parameter permintaan

Parameter Type Required Description
scroll STRING Yes Periode validitas scroll ID, ditentukan sebagai angka diikuti satuan: minggu (w), hari (d), jam (h), menit (m), atau detik (s). Contoh: 1m. Diperlukan hanya untuk permintaan pertama.
search_type STRING Yes (first request only) Jenis pencarian scroll. Atur ke scan. Diperlukan hanya untuk permintaan pertama.
scroll_id STRING Yes (subsequent requests) Scroll ID yang dikembalikan oleh respons sebelumnya. Tidak diperlukan untuk permintaan pertama.
fetch_fields STRING No Bidang yang akan dikembalikan dalam hasil pencarian.

Parameter respons

Parameter Type Description
status STRING Hasil permintaan. Nilai yang valid: OK (sukses) atau FAIL (gagal). Jika FAIL, periksa bidang errors untuk kode kesalahan.
request_id STRING ID permintaan, digunakan untuk troubleshooting.
result STRING Hasil pencarian, termasuk searchtime, total, num, viewtotal, items, facet, dan scroll_id.
errors STRING Detail kesalahan. Bidang error_message berisi pesan kesalahan. Lihat Error codes.
Hasil pencarian scroll hanya dikembalikan dalam format fullJSON atau JSON.

Jalankan pencarian scroll

Langkah 1: Memulai scroll

Kirim permintaan pertama dengan search_type=scan dan nilai scroll. Responsnya berisi scroll ID dan array items kosong—tidak ada dokumen yang dikembalikan pada tahap ini.

Contoh respons untuk permintaan pertama:

{
    "status": "OK",
    "request_id": "150150574119953661605242",
    "result": {
        "searchtime": 0.005029,
        "total": 1,
        "num": 0,
        "viewtotal": 1,
        "scroll_id": "eJxtUMtuhDAM/BrvOYQC5cABdulvRFFIirsm2TpBavv1Ndut1EMlS36NZ0Y2ZHMxbueceAjIuWCMnrPjRITLyfzZm83y9V QVGT8x80U3PxQNUqieVZV1/an4ItbTUBPSx5wgXqKdvOSbmuKR8ZYjGWWirB4tvToAiX7u3G2eCNK77vnz8GlGPAV6suKBeqxAn0OiTd7NGEnesspyoyFLF6hecn4JUKjVgp0K3FnkfMfIyPoDuYWegX9GeYOpicY9TG8gwOSuBL04X1 MMg3ROwCesLlG6X7a2o=",
        "items": [],
        "facet": []
    },
    "errors": [],
    "tracer": ""
}

Langkah 2: Ambil Batch Dokumen

Gunakan scroll_id dari respons sebelumnya untuk mengambil batch berikutnya. Scroll ID dalam respons diperbarui pada setiap permintaan—selalu gunakan yang paling baru.

Atur parameter hit pada permintaan pertama untuk mengontrol ukuran batch. Nilai ini bersifat tetap selama seluruh sesi; mengubah hit pada permintaan berikutnya tidak berpengaruh. Setiap batch dapat berisi paling banyak 500 dokumen.

Contoh respons untuk permintaan lanjutan:

{
    "status": "OK",
    "request_id": "150150574119952551519970",
    "result": {
        "searchtime": 0.006293,
        "total": 1,
        "num": 1,
        "viewtotal": 1,
        "scroll_id": "eJxNT9tugzAM/RrznIRC4YEHaNlvRFFIhteQtE6Qtn39TNdJk2z5dnx8rIPJRdudcqKhl60Uir2Vp06ISv8b6s3QbZCVzpaCdp93XXBzg2wEW9MJ2dWq8q7YVXt0YckDLlBP0WyOw31N8YgYizZEnAUsjkx4VT4k8zexpjiNS/XYHX0NNkWP71BfVyxQjxLUxSfazFH4PYSPnCL3iMniDZq3jN98aFRCgGrZniy8/itkBHWGuYVeQH+B+QzTCUZ1NJ9gj4FVMfrQPr8Y+Hk+dgU14fIDVhtfTw==",
        "items": [
            {
                "fields": {
                    "cate_id": "0",
                    "float_arr": "0",
                    "id": "1",
                    "int_arr": "0",
                    "litteral_arr": "Search",
                    "name": "Search",
                    "phone": "1381111****",
                    "index_name": "app_schema_demo"
                },
                "property": {},
                "attribute": {},
                "variableValue": {},
                "sortExprValues": [
                    "1"
                ]
            }
        ],
        "facet": []
    },
    "errors": [],
    "tracer": ""
}

Langkah 3: Mendeteksi akhir hasil

Ketika items berupa array kosong, semua dokumen telah diambil dan sesi scroll selesai. Hentikan pengiriman permintaan pada titik ini.

{
    "items": []
}

Batasan

Limitation Details
Unsupported features Klausa agregat, klausa distinct, ekspresi penyortiran kasar, ekspresi penyortiran halus, dan analisis query tidak didukung.
Sorting Penyortiran hanya didukung pada satu bidang bertipe INT. Memerlukan OpenSearch API dan SDK versi V3 atau lebih baru.
Pagination Parameter start dalam klausa konfigurasi tidak berpengaruh selama pencarian scroll. Nilai default 0 selalu digunakan, dan halaman tidak dapat dilewati.
Batch size Setiap batch dapat berisi paling banyak 500 dokumen. Atur parameter hit pada permintaan pertama untuk mengontrol jumlah dokumen per batch.
Cross-application scrolling Pencarian scroll lintas aplikasi tidak didukung.
Response format Hasil hanya dikembalikan dalam format fullJSON atau JSON.

Troubleshooting

Error: "Scroll_id is expired"

Scroll ID kedaluwarsa sebelum batch berikutnya diambil. Perbarui parameter scroll dan mulai ulang sesi scroll dari langkah 1.

Invalid scroll_id

Jika nilai parameter scroll_id dalam permintaan tidak valid, terjadi kesalahan.

Checking for errors

Gunakan kode kesalahan dan pesan dalam bidang errors untuk mendiagnosis kegagalan—jangan hanya mengandalkan bidang status. Lihat Error codes untuk daftar lengkapnya.

Langkah selanjutnya