我正在尝试创建一个滤色器。返回的颜色大多是正常的,但还有一些其他颜色。例如,我的结果显示如下:
{ key: "WHITE", doc_count: 300 },
{ key: "OFFWHITE", doc_count: 2 },
{ key: "SUPER WHITE", doc_count: 1 }
我的聚合看起来像:
aggs: {
Color: {
terms: {
field: 'colors.keyword',
size: 100,
},
},
}
我想将任何包含“白色”的东西合并到一个桶中。与其他顶级颜色相同。这可能吗?如何实现?
最佳答案
另一种方法是使用 filter aggregation .这里的过滤器可以是 wildcard query匹配颜色。
聚合看起来如下:
{
"aggs": {
"WHITE": {
"filter": {
"wildcard": {
"colors.keyword": "*WHITE*"
}
}
},
"BLUE": {
"filter": {
"wildcard": {
"colors.keyword": "*BLUE*"
}
}
}
}
}
以上不需要任何脚本。但正如 Kamal 所建议的那样,最好的方法是拥有一个单独的字段,例如 primary_color
并在其上聚合。
关于javascript - 如何在聚合中组合相似的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56153826/