全部产品
Search
文档中心

OpenSearch:Statistik Grup - klausa agregat

更新时间:Jun 26, 2025

Puluhan ribu dokumen dapat diambil berdasarkan satu kueri pencarian. Namun, Anda mungkin tidak ingin melihat semua dokumen yang diambil untuk mendapatkan informasi yang diperlukan. Jika Anda ingin melihat beberapa statistik dari dokumen yang diambil, Anda dapat menggunakan klausa agregat untuk mendapatkan statistik tersebut.

Sintaksis

Sintaksis klausa agregat:

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: sebuah bidang atribut

Ya

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

Menentukan nama bidang untuk mana Anda ingin mengumpulkan statistik. Anda harus mengonfigurasi bidang atribut dalam parameter ini.

agg_fun

Ya

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

dan distinct_count(id).

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

range

Tidak

Nilai antara Angka 1 dan Angka 2 serta nilai lebih besar dari Angka 2. Nilai bidang dengan tipe STRING tidak dapat digabungkan untuk mengumpulkan statistik.

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

agg_filter

Tidak

Mengambil dokumen yang memenuhi kondisi tertentu.

agg_sampler_threshold

INT

Tidak

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

agg_sampler_step

INT

Tidak

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

max_group

INT

Tidak

1.000

Menentukan jumlah maksimum pasangan key-item yang dapat dikembalikan.

Catatan Penggunaan

  • Klausa agregat bersifat opsional.

  • Bidang yang dirujuk dalam parameter di atas harus dikonfigurasi sebagai bidang atribut saat Anda mendefinisikan skema aplikasi.

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

  • Anda dapat menentukan beberapa parameter group_key dalam klausa agregat untuk mengumpulkan statistik untuk berbagai bidang pada saat yang sama. Pisahkan perhitungan untuk bidang dengan titik koma (;).

Contoh:

group_key:field1,agg_fun:func1;group_key:field2,agg_fun:func2
  • Hasil klausa agregat dikembalikan ke node facet. Untuk menampilkan statistik dalam hasil pengembalian, Anda harus mengatur format klausa config ke JSON penuh.

  • Fitur distinct_count didukung hanya di kluster eksklusif. Untuk menggunakan fitur ini, Anda harus menambahkan parameter enable_accurate_statistics ke dalam klausa kvpairs dan menetapkan parameter ini ke true. Saat fitur ini digunakan, sistem hanya mengembalikan statistik di node facet untuk 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 menetapkan parameter ini ke 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 batasan pada kinerja mesin. Untuk kluster eksklusif, Anda dapat menambahkan parameter enable_accurate_statistics ke dalam klausa kvpairs dan menetapkannya ke true. Dengan cara ini, sistem dapat 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 pengembalian:

    {
      status: "OK",
      result: {
        searchtime: 0.015634,
        total: 5,
        num: 1,
        viewtotal: 5,
        items: [        // Hasil pengembalian.
          { ... }
        ],
        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 yang peringkatnya lebih rendah dari 10.000 diambil sampelnya. Ukuran langkah pengambilan sampel diatur ke 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 agregat menghitung jumlah dokumen yang nilainya pada bidang group_id berada dalam rentang dari 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 nilainya pada bidang 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