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,所以whitestats
aggregation只包括具有现有价格的文档并返回总数。我可以通过减法推断出有多少文档没有价格字段 在这种特殊情况下,我不需要设置“missing”:0
{
"size": 0,
"aggs": {
"by_offer_id": {
"terms": {
"field": "offerId"
},
"aggs": {
"price_stats": {
"stats": {
"field": "price"
}
}
}
}
}
}
因为术语聚合返回的是total
documentcount,所以whitestats
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"