Elasticsearch聚合

时间:2014-09-24 12:13:48

标签: elasticsearch facets drilldown

我尝试使用elasticsearch构建类别明细。

我显示类别计数的问题。

如果我运行此查询(红色,休闲裤),则类别聚合将仅显示随意数。 我可以在单个查询中检索其他类别(例如鞋子,牛仔裤,连衣裙)

示例过滤器:

颜色

  

-Red Color(选为bool查询术语)

分类

Shoes
Pants
    -Jeans
    - Casual (selected as a bool query term)
Dresses

1 个答案:

答案 0 :(得分:0)

如果我理解得很清楚,您似乎需要计算所有类别的聚合,然后对其进行过滤,以便一次只显示一个类别。

这可以使用post_filter来实现(请参阅documentation)。这是一个过滤器,在>计算聚合后应用

在您的情况下,而不是像这样查询:

{
  "query": {
    "bool": {
      "must": [
        {"term": {"color": "red"} },
        {"term": {"category": "casual"}}
        ....
      ]
    }
  }, 
  "aggs": {
    ...
  }
}

你用这个:

{
  "query": {
    "bool": {
      "must": [
        {"term": {"color": "red"} }
        ...
      ]
    }
  }, 
  "aggs": {
    ...
  },
  "post_filter": {
    {"term": {"category": "casual"}}
  }
}

计算聚合时,term上的category过滤器不会被考虑在内。