[英]Add condition to filter aggregation in elastic search
我想要基於彈性搜索中應用的某些過濾器對變量的每個值進行計數。 例如,我想要所有年齡段的學生,但要過濾掉來自加利福尼亞的學生。
年齡段是文本字段,包含這樣的數組,
"age_group": ["5-6-years", "6-7-years"]
我有點想要這樣的查詢,但這不起作用。 它拋出一個錯誤說
無法解析名稱為[count]的BaseAggregationBuilder:找不到解析器
"student_aggregation": {
"nested": {
path": "students"
},
"aggs": {
"available": {
"filter": {
"term": { "students.place_of_birth": "California" }
},
"aggs" : {
"age_group" : { "count" : { "field" : "students.age_group" } }
}
}
}
}
向您的部隊尋求幫助。
這是因為沒有稱為count
的度量聚合,而是使用value_count
代替:
"student_aggregation": {
"nested": {
path": "students"
},
"aggs": {
"available": {
"filter": {
"term": { "students.gender": "boys" }
},
"aggs" : {
"age_group" : { "value_count" : { "field" : "students.age_group" } }
^^^
|||
}
}
}
}
更新 :
經過討論, terms
聚合”比“ value_count
更合適。 修復了映射關系后(該text
為text
而不是keyword
),該查詢可以正確計算出
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.