All Products
Search
Document Center

OpenSearch:Klausa Aggregate

Last Updated:Aug 22, 2026

Ikhtisar

Puluhan ribu dokumen dapat diambil berdasarkan satu kueri pencarian. Namun, Anda mungkin tidak perlu melihat semua dokumen tersebut untuk memperoleh informasi yang dibutuhkan. Jika ingin melihat statistik dari dokumen yang diambil, Anda dapat menggunakan klausa aggregate.

Sintaks

Sintaks klausa aggregate:

group_key:field, range:number1~number2, agg_fun:func1#func2, max_group:number2, 
agg_filter:filter_clause, max_group:number

Parameter:

Parameter

Tipe

Wajib

Nilai valid

Nilai default

Deskripsi

group_key:field

field: bidang atribut

Ya

Bidang dengan tipe INT, LITERAL, INT_ARRAY, atau LITERAL_ARRAY. Jika bidang atribut bertipe INT_ARRAY atau LITERAL_ARRAY dan suatu item dalam array berulang, jumlah kemunculannya akan dihitung.

Menentukan nama bidang yang statistiknya ingin dikumpulkan. Anda harus mengonfigurasi bidang atribut pada parameter ini.

agg_fun

Ya

Fungsi bawaan: count(id), sum(id), max(id), min(id), dan distinct_count(id).

Anda dapat mengatur func ke fungsi bawaan count(), sum(id), max(id), min(id), atau distinct_count(id) untuk menghitung jumlah dokumen, jumlah nilai bidang, nilai maksimum bidang, nilai minimum bidang, atau jumlah nilai unik dalam suatu bidang. Anda dapat menggunakan beberapa fungsi sekaligus dengan memisahkannya menggunakan tanda pagar (#). Anda juga dapat mereferensikan beberapa bidang dalam fungsi sum(), max(), atau min() dengan menggunakan operator aritmetika dasar.

range

Tidak

Nilai antara Number 1 dan Number 2 serta nilai yang lebih besar dari Number 2. Nilai bidang bertipe STRING tidak dapat diagregasi untuk mengumpulkan statistik.

Menghasilkan statistik berdasarkan rentang nilai. Parameter ini dapat digunakan untuk distribusi data. Anda hanya dapat menentukan satu parameter range dalam klausa aggregate.

agg_filter

Tidak

Mengambil dokumen yang memenuhi kondisi tertentu.

agg_sampler_threshold

INT

Tidak

Menentukan ambang batas untuk pengambilan sampel dokumen. Dokumen yang diambil dengan peringkat lebih tinggi dari ambang batas akan dihitung secara berurutan dalam statistik, sedangkan dokumen dengan peringkat lebih rendah dari ambang batas akan diambil sampelnya berdasarkan nilai parameter agg_sampler_step.

agg_sampler_step

INT

Tidak

Menentukan ukuran langkah pengambilan sampel. Nilai ini menunjukkan interval pengambilan sampel dokumen yang peringkatnya lebih rendah dari ambang batas yang ditentukan oleh parameter agg_sampler_threshold. Statistik yang dikumpulkan oleh fungsi sum() dan count() diproses sebagai berikut: Sistem mengalikan statistik dokumen dengan peringkat lebih rendah dari ambang batas dengan ukuran langkah pengambilan sampel untuk menghasilkan statistik perkiraan. Kemudian, sistem menambahkan statistik perkiraan tersebut ke statistik dokumen dengan peringkat lebih tinggi dari ambang batas guna menghasilkan statistik akhir.

max_group

INT

Tidak

1000

Menentukan jumlah maksimum pasangan kunci-item yang dapat dikembalikan.

Catatan penggunaan

  • Klausa aggregate bersifat opsional.

  • Bidang yang dirujuk dalam parameter harus dikonfigurasi sebagai attribute fields saat Anda mendefinisikan skema aplikasi.

  • Hasil klausa aggregate dikembalikan ke node facet, yaitu node yang digunakan untuk pencarian. Fungsi seperti sum() dan count(), yang ditentukan oleh parameter agg_fun, menampilkan statistik tersebut.

  • Anda dapat menentukan beberapa parameter group_key dalam satu klausa aggregate untuk mengumpulkan statistik dari bidang berbeda secara bersamaan. Pisahkan perhitungan untuk masing-masing bidang dengan titik koma (;). Contoh: group_key:field1,agg_fun:func1;group_key:field2,agg_fun:func2.

  • Hasil klausa aggregate dikembalikan ke node facet. Untuk menampilkan statistik dalam respons, Anda harus mengatur format klausa config ke full JSON.

  • Fungsi distinct_count hanya didukung di kluster eksklusif. Untuk menggunakan fungsi ini, Anda harus menambahkan parameter enable_accurate_statistics ke dalam klausa kvpairs dan mengatur nilainya menjadi true. Saat fitur ini digunakan, sistem hanya mengembalikan statistik di node facet untuk suatu kueri.

  • Fungsi count(), max(), min(), dan sum() didukung di kluster eksklusif. Untuk menggunakan fungsi-fungsi ini, Anda harus menambahkan parameter enable_accurate_statistics ke dalam klausa kvpairs dan mengatur nilainya menjadi true.

  • Sistem dapat mengembalikan statistik akurat hingga 100.000 dokumen. Jika jumlah dokumen yang sesuai dengan kondisi yang ditentukan melebihi 100.000, statistik yang dikembalikan mungkin tidak akurat karena keterbatasan performa mesin. Untuk kluster eksklusif, Anda dapat menambahkan parameter enable_accurate_statistics ke dalam klausa kvpairs dan mengatur nilainya menjadi true agar sistem mengembalikan statistik yang lebih akurat.

Contoh

  1. Gunakan klausa kueri berikut untuk mendapatkan statistik dokumen yang berisi "Zhejiang University". Statistik dihitung berdasarkan bidang group_id dan company_id. Untuk bidang group_id, statistik mencakup jumlah nilai dan nilai maksimum dari bidang price. Untuk bidang company_id, statistik mencakup jumlah kemunculan setiap perusahaan.

    query=default:'Zhejiang University'&&aggregate=group_key:group_id,agg_fun:sum(price)#max(price);group_key:company_id,agg_fun:count()

    Contoh hasil respons:

    {
      status: "OK",
      result: {
        searchtime: 0.015634,
        total: 5,
        num: 1,
        viewtotal: 5,
        items: [        // Hasil respons.
          { ... }
        ],
        facet: [
          {
            key: "group_id",
            items: [
              {
                value: 43,
                sum: 81,
                max: 20,
              },
              {
                value: 63,
                sum: 91,
                max: 50,
              },
            ],
          },
          {
            key: "company_id",
            items: [
              {
                value: 13,
                count: 4,
              },
              {
                value: 10,
                count: 1,
              },
            ],
          },
        ],
      },
      errors: [ ],
      tracer: "",
    },
  2. Gunakan klausa kueri berikut untuk mendapatkan statistik dokumen yang berisi "Zhejiang University" berdasarkan bidang group_id. Jumlah nilai bidang price dihitung. Dokumen dengan peringkat lebih rendah dari 10.000 diambil sampelnya dengan ukuran langkah pengambilan sampel sebesar 5.

    query=default:'Zhejiang University'&&aggregate=group_key:group_id,agg_fun:sum(price), agg_sampler_threshold:10000, agg_sampler_step:5
  3. Gunakan klausa kueri berikut untuk mendapatkan statistik dokumen yang berisi "Zhejiang University" berdasarkan bidang group_id. Klausa aggregate menghitung jumlah dokumen yang nilai bidang group_id-nya berada dalam rentang 10 hingga 50.

    query=default:'Zhejiang University'&&aggregate=group_key:group_id,agg_fun:count(),range:10~50
  4. Gunakan klausa kueri berikut untuk mendapatkan statistik dokumen yang berisi "Zhejiang University" berdasarkan bidang group_id. Jumlah nilai maksimum dari bidang hits dan replies dihitung di antara dokumen yang nilai bidang create_timestamp-nya lebih besar dari 1423456781.

    query=default:'Zhejiang University'&&aggregate=group_key:group_id,agg_fun:max(hits+replies),agg_filter:create_timestamp>1423456781