在后置过滤器聚合分面搜索中保留用户界面

时间:2016-09-02 08:18:42

标签: elasticsearch

我正在将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执行此操作?我已经浏览了所有文档 - 多次,并尝试了许多不同的查询格式,但到目前为止还没有产生任何正确的结果。

0 个答案:

没有答案