我试图对数组中的值进行聚合,并过滤前缀返回的存储区.不确定这是否可行或我是否滥用过滤器桶.
3份文件:
{ "colors":["red","black","blue"] }
{ "colors":["red","black"] }
{ "colors":["red"] }
Run Code Online (Sandbox Code Playgroud)
目标是获取具有以字母B开头的颜色的文档计数:
{
"size":0,
"aggs" : {
"colors" : {
"filter" : { "prefix" : { "colors" : "b" } },
"aggs" : {
"top-colors" : { "terms" : { "field":"colors" } }
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,回来的结果包括Red.显然因为带有红色的文档仍然匹配过滤器,因为它们也有蓝色和/或黑色.
"aggregations": {
"colors": {
"doc_count": 2,
"top-colors": {
"buckets": [
{
"key": "black",
"doc_count": 2
},
{
"key": "red",
"doc_count": 2
},
{
"key": "blue",
"doc_count": 1
}
]
}
}
} …Run Code Online (Sandbox Code Playgroud)