使用ElasticSearch嵌套树的构面

时间:2014-07-09 01:34:04

标签: elasticsearch aggregation facets

我是ElasticSearch的新手,所以我需要一些帮助。

我有一个查询来搜索可能属于许多products的{​​{1}}。 categories组合在一个嵌套树中。

示例数据:

Categories

除搜索结果外,我还需要获取categories: [ { id: 1, name: 'First category', categories:[ { id: 12, name: 'First subcategory' }, { id: 13, name: 'Second subcategory' } ] }, { id: 2, name: 'Second category' } ], products: [ { id: 1, name: 'First product', categories_ids: [2, 12] }, { id: 2, name: 'Second product', categories_ids: [1] } ] 树,其中包括每个categories中的搜索结果数量(不包括任何搜索结果的类别)。

对于上面的例子,它应该是:

  • 第一类(2)
    • 第一个子类别(1)
  • 第二类(1)

有人可以使用ElasticSearch的聚合解释如何执行此操作吗?

感谢。

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

我认为你正在寻找解决这个问题的方法:

{
  "aggs": {
    "category_agg": {
      "terms": {
        "field": "category_name"
      },
      "aggs": {
        "sub_category_agg": {
          "terms": {
            "field": "sub_category"
          },
          "filter": {
            "term": {
              "sub_category": "First subcategory"
            }
          }
        }
      }
    }
  }
}

根据需要应用过滤器(或省略),并确保对其进行聚合的字段(本例中为category_name和subcategory_name)进行not_analyzed。