Elasticsearch聚合

时间:2014-08-13 17:06:45

标签: lucene elasticsearch

如果只有一种产品颜色不同,有没有办法只返回一种产品。 例如假设我有一个具有以下属性的产品:

brand,color,title
nike, red, air max
nike, blue, air max

现在我想创建弹性搜索查询,在聚合时只返回一个产品,但算作两个属于品牌耐克的产品。

{
    "query" : {
        "match_all" : {}

    },

    "aggs" : {
        "brand" : {
            "terms" : {
                "field" : "brand"
            },
            "aggs" : {
                "size" : {
                    "terms" : {
                        "field" : "title"
                    }
                }
            }
        }

    }

}

我无法获得理想的结果。我想要select name,color,title, count(*) title from product group by name,title

1 个答案:

答案 0 :(得分:2)

我想你想要获取文件,按名称,标题汇总

这可以使用topHits聚合来完成。

{
   "size": 0,
   "query": {
      "match_all": {}
   },
   "aggs": {
      "brand": {
         "terms": {
            "field": "name"
         },
         "aggs": {
            "size": {
               "terms": {
                  "field": "title"
               }
            },
            "aggs":{
                "top_hits" :{
                    "_source" :[ "name","color","band"],
                    "size":1
                }
            }
         }
      }
   }
}

对于count,返回的存储区中始终存在doc_count。

希望这有帮助!!如果我遗失了什么,请提及。

由于