Elasticseach-范围汇总,仅计算每个产品的最高价格

时间:2018-08-21 16:22:20

标签: elasticsearch search range aggregation cardinality

让我们说我们有一个数据集,其中包含具有产品名称和产品销售价格的文档:

{
   "product": "Table",
   "price": 20
},
{
   "product": "Table",
   "price": 20
},
{
   "product": "Chair",
   "price": 20
},
{
   "product": "Table",
   "price": 70
}

现在,我只想获取价格最高的每种产品的记录,并将它们记录在范围汇总中。

这就是我所做的:

{
"aggs":{
  "PriceRange":{
    "range":{
      "field":"price",
      "ranges":[
        {"from":0.0,"to":24.0},
        {"from":25.0,"to":49.0},
        {"from":50.0,"to":74.0},
        {"from":75.0}
      ]
    },
    "aggs": {
      "Users":{
        "cardinality":{
          "field":"userid"
        }
      }
    }
  }
}
}

但是使用该查询,由于基数适用于每个存储桶,因此表将在0-24存储桶和50-74存储桶中计数一次。但是我只想计算每种产品的最高价格。

我希望问题已经解决,您可以为我提供帮助:)

问候

0 个答案:

没有答案