具有意外结果的脚本化聚合计算

问题描述 投票:0回答:1

首先,我是ES / SK的新手,而对于农业来说更是如此。

这是我的aggs结构:

  aggs: {
    all_budgets: {
      sum: {
        field: :amount
      }
    },
    all_forecasts: {
      sum: {
        field: :forecast_total
      }
    },
    all_variance: {
      sum: {
        script: "doc['forecast_total'].value - doc['amount'].value"
      }
    },
    all_variance_p: {
      sum: {
        script: "(doc['forecast_total'].value - doc['amount'].value) / doc['amount'].value"
      }
    }

  }

我基本上是在尝试获取所有预算的总和,总支出,然后是预算的超出/低于预算以及相应的百分比。这是我的输出:

{
  "all_forecasts": {
    "doc_count": 2,
    "value": 173604.0
  },
  "all_budgets": {
    "doc_count": 2,
    "value": 185437.0
  },
  "all_variance_p": {
    "doc_count": 2,
    "value": "0.33694326595832774"
  },
  "all_variance": {
    "doc_count": 2,
    "value": -11833.0
  }
}

“ 0.33694326595832774”值错误-应该为“ -0.06408106257”(即-11833.0 / 185437.0)。前两个脚本有效,我怀疑我不了解这些脚本的工作原理。

elasticsearch searchkick
1个回答
0
投票

除法之前,请尝试将数字强制转换为相同的datatype。例如((float)(doc['forecast_total'].value) - (float)(doc['amount'].value)) / (float)(doc['amount'].value))

© www.soinside.com 2019 - 2024. All rights reserved.