[英]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.