elasticsearch 如何为范围聚合中缺少的字段设置值?,elasticsearch,elasticsearch" /> elasticsearch 如何为范围聚合中缺少的字段设置值?,elasticsearch,elasticsearch" />

elasticsearch 如何为范围聚合中缺少的字段设置值?

elasticsearch 如何为范围聚合中缺少的字段设置值?,elasticsearch,elasticsearch,我按offerId进行分组,每个桶有两个桶:price 0。我需要确保价格在这种特殊情况下,我不需要设置“缺失”:0 { "size": 0, "aggs": { "by_offer_id": { "terms": { "field": "offerId" }, "aggs": { "price_stats": { "stats": {

我按
offerId
进行分组,每个桶有两个桶:
price 0
。我需要确保
价格在这种特殊情况下,我不需要设置
“缺失”:0

{
   "size": 0,
   "aggs": {
      "by_offer_id": {
         "terms": {
            "field": "offerId"
         },
         "aggs": {
            "price_stats": {
               "stats": {
                  "field": "price"
               }
            }
         }
      }
   }
}

因为术语聚合返回的是
total
documentcount,所以white
stats
aggregation只包括具有现有价格的文档并返回总数。我可以通过减法推断出有多少文档没有价格字段

在这种特殊情况下,我不需要设置
“missing”:0

{
   "size": 0,
   "aggs": {
      "by_offer_id": {
         "terms": {
            "field": "offerId"
         },
         "aggs": {
            "price_stats": {
               "stats": {
                  "field": "price"
               }
            }
         }
      }
   }
}

因为术语聚合返回的是
total
documentcount,所以white
stats
aggregation只包括具有现有价格的文档并返回总数。我可以通过减法推断出有多少文档没有价格字段

我认为您应该像这样使用脚本:

{
“大小”:0,
“aggs”:{
“按报价人id”:{
“条款”:{
“字段”:“offerId”
},
“aggs”:{
“按价格”:{
“范围”:{
“脚本”:{
“郎”:“无痛”,
“来源”:“单据['price'].value==null?0:单据['price'].value”
},
“范围”:[
{
“至”:0
},
{
“发件人”:0
}
]
},
“aggs”:{
“价格统计”:{
“统计数据”:{
“字段”:“价格”
}
}
}
}
}
}
}
}


我认为您应该像这样使用脚本:

{
“大小”:0,
“aggs”:{
“按报价人id”:{
“条款”:{
“字段”:“offerId”
},
“aggs”:{
“按价格”:{
“范围”:{
“脚本”:{
“郎”:“无痛”,
“来源”:“单据['price'].value==null?0:单据['price'].value”
},
“范围”:[
{
“至”:0
},
{
“发件人”:0
}
]
},
“aggs”:{
“价格统计”:{
“统计数据”:{
“字段”:“价格”
}
}
}
}
}
}
}
}


您需要将
“missing”:0
放在
stats
聚合内,而不是
范围内。但是
缺少
在ES 1.7中不可用,您至少需要ES 2.0。@Val看起来在1.7中不受支持,但我肯定会在2.4中尝试使用子聚合:?是的,但您不会在范围聚合结果内得到结果您需要将
放入“缺少”:0
stats
聚合内,而不是
范围内。但是,ES 1.7中没有
缺少
,您至少需要ES 2.0。@Val在1.7中似乎不受支持,但我肯定会尝试2.4个。可以使用子聚合:?是的,但您不会在范围聚合结果内得到结果
"source": "doc['price'].value * 1"