All Products
Search
Document Center

OpenSearch:Statistik kelompok: klausa aggregate

Last Updated:Oct 22, 2026

Kueri kata kunci dapat mengembalikan puluhan ribu dokumen, sehingga pengguna jarang menelusuri seluruhnya untuk menemukan informasi yang dibutuhkan. Dalam beberapa kasus, pengguna mungkin lebih memerlukan data statistik.

Sintaksis

Format klausa statistik:

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 yang valid

Nilai default

Deskripsi

group_key:field

field harus berupa attribute field

Ya

Saat ini, statistik hanya didukung untuk field bertipe INT, LITERAL, INT_ARRAY, dan LITERAL_ARRAY. (Catatan: Untuk tipe field INT_ARRAY dan LITERAL_ARRAY, statistik dihitung dengan mengelompokkan nilai yang identik dalam field tersebut.)

field menentukan nama field tempat statistik dihitung. Field ini harus dikonfigurasikan sebagai attribute field.

agg_fun

Ya

count(), sum(id), max(id), min(id),

distinct_count (total lima Fungsi sistem)

func dapat berupa salah satu dari lima Fungsi sistem: count(), sum(id), max(id), min(id), dan distinct_count(id). Fungsi-fungsi ini secara berurutan menghitung jumlah dokumen, menjumlahkan nilai field id, mendapatkan nilai maksimum field id, mendapatkan nilai minimum field id, dan menghitung jumlah nilai unik id. Multiple fungsi dapat dihitung secara bersamaan, dipisahkan dengan tanda pagar (#). Konten sum, max, dan min mendukung operasi aritmatika dasar.

range

Tidak

Menunjukkan interval dari number1 hingga number2 dan lebih besar dari number2. (Catatan: Statistik distribusi tidak didukung untuk field bertipe string.)

Menentukan statistik berbasis rentang, yang dapat digunakan untuk statistik distribusi. Hanya satu parameter range yang didukung.

agg_filter

Tidak

Menentukan bahwa hanya dokumen yang memenuhi kondisi tertentu yang akan dihitung.

agg_sampler_threshold

int

Tidak

, ambang batas untuk statistik berbasis Pengambilan sampel. Dokumen sebelum nilai ini dihitung satu per satu, dan dokumen setelah nilai ini dihitung melalui Pengambilan sampel;

agg_sampler_step

int

Tidak

Ukuran langkah untuk statistik berbasis Pengambilan sampel. Dimulai setelah agg_sampler_threshold, satu dokumen dihitung setiap agg_sampler_step dokumen. Untuk statistik sum dan count, hasil Pengambilan sampel setelah ambang batas dikalikan dengan ukuran langkah untuk menghasilkan estimasi, dan estimasi ini ditambahkan ke hasil statistik sebelum ambang batas untuk memperoleh hasil akhir.

max_group

int

Tidak

1.000

Jumlah maksimum kelompok yang akan dikembalikan

Catatan penggunaan

  • Klausa aggregate bersifat opsional.

  • Field yang digunakan dalam klausa aggregate harus dikonfigurasikan sebagai attribute field saat mendefinisikan skema aplikasi.

  • Hasil agregat ditampilkan pada node facet di hasil pencarian. Nama field dari nilai spesifik mengikuti nama fungsi agg_fun, seperti sum dan count.

  • Klausa agregat mendukung statistik pada beberapa kunci. Pisahkan setiap statistik dengan titik koma (;).

Format referensi:

group_key:field1,agg_fun:func1;group_key:field2,agg_fun:func2
  • Informasi dari klausa statistik ini ditampilkan dalam facet. Anda harus mengatur format dalam klausa config menjadi fulljson agar konten facet dapat dikembalikan dan ditampilkan.

  • Fitur distinct_count hanya didukung dalam kluster eksklusif, dan Anda harus menambahkan parameter enable_accurate_statistics:true ke klausa kvpairs. Saat menggunakan fitur distinct_count, kueri tidak lagi mengambil data hasil spesifik dan hanya mengembalikan data statistik dalam facet.

  • Dalam kluster eksklusif, statistik akurat didukung untuk count, max, min, dan sum. Anda harus menambahkan parameter enable_accurate_statistics:true ke klausa kvpairs.

  • Karena batasan performa engine, klausa statistik agregat hanya menjamin akurasi statistik jumlah dokumen jika dokumen yang diambil tidak melebihi 100.000. Akurasi tidak terjamin jika dokumen yang dihitung melebihi 100.000. (Dalam kluster eksklusif, Anda dapat menambahkan parameter enable_accurate_statistics:true ke klausa kvpairs untuk meningkatkan akurasi statistik.)

Contoh

  1. Cari dokumen yang berisi "Zhejiang University", hitung statistik berdasarkan field group_id (termasuk jumlah dan nilai maksimum field price), serta hitung jumlah dokumen berdasarkan company_id:

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

    Hasil:

    {
      status: "OK",
      result: {
        searchtime: 0.015634,
        total: 5,
        num: 1,
        viewtotal: 5,
        items: [        //Hasil pencarian spesifik
          { ... }
        ],
        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. Cari dokumen yang berisi "Zhejiang University" dan hitung statistik berdasarkan field group_id, termasuk jumlah field price. Dokumen setelah 10.000 pertama diambil sampelnya dengan ukuran langkah 5:

    query=default:'Zhejiang University'&&aggregate=group_key:group_id,agg_fun:sum(price), agg_sampler_threshold:10000, agg_sampler_step:5
  3. Cari dokumen yang berisi "Zhejiang University" dan hitung jumlah dokumen berdasarkan field group_id, dengan dimensi statistik berupa jumlah dokumen kurang dari 10, antara 10 hingga 50, dan lebih besar dari 50:

    query=default:'Zhejiang University'&&aggregate=group_key:group_id,agg_fun:count(),range:10~50
  4. Cari dokumen yang berisi "Zhejiang University" dan hitung nilai maksimum dari jumlah hits dan replies berdasarkan field group_id, dengan hanya menghitung dokumen yang memiliki create_timestamp lebih besar dari 1423456781:

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