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:numberParameter:
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:func2Informasi 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:trueke 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:trueke 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
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: "", },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:5Cari 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~50Cari 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