Saya mencoba membuat daftar semua ember pada agregasi, tetapi tampaknya hanya menampilkan 10 ember pertama.
Pencarian saya:
curl -XPOST "http://localhost:9200/imoveis/_search?pretty=1" -d'
{
"size": 0,
"aggregations": {
"bairro_count": {
"terms": {
"field": "bairro.raw"
}
}
}
}'
Pengembalian:
{
"took" : 2,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 16920,
"max_score" : 0.0,
"hits" : [ ]
},
"aggregations" : {
"bairro_count" : {
"buckets" : [ {
"key" : "Barra da Tijuca",
"doc_count" : 5812
}, {
"key" : "Centro",
"doc_count" : 1757
}, {
"key" : "Recreio dos Bandeirantes",
"doc_count" : 1027
}, {
"key" : "Ipanema",
"doc_count" : 927
}, {
"key" : "Copacabana",
"doc_count" : 842
}, {
"key" : "Leblon",
"doc_count" : 833
}, {
"key" : "Botafogo",
"doc_count" : 594
}, {
"key" : "Campo Grande",
"doc_count" : 456
}, {
"key" : "Tijuca",
"doc_count" : 361
}, {
"key" : "Flamengo",
"doc_count" : 328
} ]
}
}
}
Saya memiliki lebih dari 10 kunci untuk agregasi ini. Dalam contoh ini saya akan memiliki 145 kunci, dan saya ingin menghitung untuk masing-masing. Apakah ada pagination pada bucket? Bisakah saya mendapatkan semuanya?
Saya menggunakan Elasticsearch 1.1.0
sumber
size:0
. Anda dapat membacanya lebih banyak di edisiCatatan
"size":10000
Dapatkan maksimal 10.000 ember. Defaultnya adalah 10."size":0
Hasilnya,"hits"
berisi 10 dokumen secara default. Kami tidak membutuhkan mereka.Secara default, bucket dipesan oleh
doc_count
urutan menurun.Karena data field dinonaktifkan pada bidang teks secara default . Jika Anda belum memilih pemetaan jenis bidang, pemetaan dinamis default untuk bidang string .
Jadi, alih-alih menulis,
"field": "your_field"
Anda harus memilikinya"field": "your_field.keyword"
.sumber
Tingkatkan ukuran (ukuran 2) menjadi 10.000 dalam agregasi istilah Anda dan Anda akan mendapatkan ember ukuran 10.000. Secara default ukurannya adalah 10. Juga jika Anda ingin melihat hasil pencarian, buat saja ukuran 1 ke 1, Anda dapat lihat 1 dokumen, karena ES memang mendukung pencarian dan agregasi.
sumber
Jika Anda ingin mendapatkan semua nilai unik tanpa menetapkan angka ajaib (
size: 10000
), maka gunakan AGREGASI KOMPOSIT (ES 6.5+) .Dari dokumentasi resmi :
"Jika Anda ingin mengambil semua istilah atau semua kombinasi istilah dalam agregasi istilah bersarang, Anda harus menggunakan AGREGASI KOMPOSIT yang memungkinkan untuk memberi peringkat pada semua istilah yang mungkin alih-alih menetapkan ukuran lebih besar dari kardinalitas bidang dalam agregasi istilah. agregasi istilah dimaksudkan untuk mengembalikan istilah teratas dan tidak mengizinkan pagination. "
Contoh implementasi dalam JavaScript:
sumber