我有一个字段“部门”,它是一个列表: { “部门”:[“食品服务”,“软件开发”,“制造”,“部署”] }'
我想汇总以“ d”开头的“部门”元素。即从所有记录进行部署。
我能够找到具有一个带有前缀“ d”的元素的记录,但无法对其进行汇总。而是我在查询前缀“ d”后返回的记录中汇总了“部门”的所有元素。
{
"query": {
"bool": {
"filter": {
"match_phrase_prefix": {
"Departments": {"query": "a"}
}
}
}
},
"aggs" : {
"all_locations" : {
"terms" : { "field" : "Departments" }
}
}
}
例如,如果我总共有4条记录,其中1条中存在“部署”,那么我想要:
部署:1
但是我实际上得到的是该记录中存在“部署”的所有元素的频率。
部署:1, 食物:1, 服务:1, 软体:1, 发展历程:1, 制造业:1
答案 0 :(得分:1)
那很容易。只需使用include关键字并将所需的正则表达式值添加到Terms Query中,您就可以得到想要的。
我在下面提到了解决方案:
POST <your_index_name>/_search
{
"query":{
"bool":{
"filter":{
"match_phrase_prefix":{
"Departments":{
"query":"a"
}
}
}
}
},
"aggs":{
"all_locations":{
"terms":{
"field":"Departments",
"include":"D.*"
}
}
}
}
以上查询将仅返回以D
开头的聚合存储桶。您可以将其更改为Dep.*
以测试Deployment
如果您认为答案可以解决您的要求,请随时接受/支持。欢迎查询。