我正在将sql server产品目录移到elasticsearch,并希望保留ui当前允许用户导航选项的方式。我正在使用带有后置过滤器的聚合,但无法让所选的选项同级兄弟显示在聚合中。
我想要实现的一个例子来自elastic docs。
GET /cars/transactions/_search
{
"size" : 0,
"query": {
"match": {
"make": "ford"
}
},
"post_filter": {
"term" : {
"color" : "green"
}
},
"aggs" : {
"all_colors": {
"terms" : { "field" : "color" }
}
}
}
因此,用户点击了绿色选项,返回的文档仅显示绿色福特汽车,但聚合列出了福特可用于计数的所有颜色,可以添加到ui。
所有这一切都没问题。但是,除了福特以外,还有很多车型。如果我添加了'make'聚合,那么此查询将仅在聚合列表中返回福特。如果从返回的结果中动态地构建导航ui(就像我一样),那么就没有办法将所有其他品牌的汽车放入ui,除非我多次查询elasticsearch以构建我的ui - 我不知道我想做。
如果我将查询更改为匹配全部并将查询添加到后置过滤器,那么我将获得聚合中汽车品牌的完整列表,但计数始终是来自匹配的全局计数查询并且不反映向下钻取计数。
是否可以使用elasticsearch执行此操作?我已经浏览了所有文档 - 多次,并尝试了许多不同的查询格式,但到目前为止还没有产生任何正确的结果。