Memfilter hasil agregasi
Pertanyaan ini adalah subpertanyaan dari pertanyaan ini . Posting sebagai pertanyaan terpisah untuk diperhatikan.
Contoh Dokumen:
{
"id":1,
"product":"p1",
"cat_ids":[1,2,3]
}
{
"id":2,
"product":"p2",
"cat_ids":[3,4,5]
}
{
"id":3,
"product":"p3",
"cat_ids":[4,5,6]
}
Tanyakan: Untuk mendapatkan produk yang termasuk dalam kategori tertentu. misalnya cat_id = 3
Pertanyaan:
GET product/_search
{
"size": 0,
"aggs": {
"cats": {
"terms": {
"field": "cats",
"size": 10
},"aggs": {
"products": {
"terms": {
"field": "name.keyword",
"size": 10
}
}
}
}
}
}
Pertanyaan:
Cara memfilter hasil agregat untuk cat_id = 3 di sini. Saya mencoba bucket_selector juga tetapi tidak berhasil.
Catatan: Karena pemfilteran cat_ids multi-nilai dan kemudian agregasi tidak berfungsi
Jawaban
Anda dapat memfilter nilai , atas dasar keranjang yang akan dibuat.
Anda dapat memfilter nilai untuk pembuatan keranjang. Ini dapat dilakukan dengan menggunakan parameter sertakan dan kecualikan yang didasarkan pada string ekspresi reguler atau array nilai yang tepat. Selain itu, klausa yang disertakan dapat memfilter menggunakan ekspresi partisi.
Menambahkan contoh yang berfungsi dengan data indeks, kueri penelusuran, dan hasil penelusuran
Indeks Data:
{
"id":1,
"product":"p1",
"cat_ids":[1,2,3]
}
{
"id":2,
"product":"p2",
"cat_ids":[3,4,5]
}
{
"id":3,
"product":"p3",
"cat_ids":[4,5,6]
}
Kueri Pencarian:
{
"size": 0,
"aggs": {
"cats": {
"terms": {
"field": "cat_ids",
"include": [ <-- note this
3
]
},
"aggs": {
"products": {
"terms": {
"field": "product.keyword",
"size": 10
}
}
}
}
}
}
Hasil pencarian:
"aggregations": {
"cats": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": 3,
"doc_count": 2,
"products": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "p1",
"doc_count": 1
},
{
"key": "p2",
"doc_count": 1
}
]
}
}
]
}