elasticsearch中,带权平均数这个聚合,如果字段和权重值都是数组的时候计算公式是怎么样的?

elasticsearch中,带权平均数这个聚合,如果字段和权重值都是数组的时候计算公式是怎么样的?
出来的结果是 3.142857142857143有点理解不了

  • 数据
[
      {
        "_index" : "exams",
        "_type" : "_doc",
        "_id" : "_-bTWm8BJi8CO_fWaZPG",
        "_score" : 1.0,
        "_source" : {
          "grade" : [
            1,
            2,
            3
          ],
          "weight" : 2
        }
      },
      {
        "_index" : "exams",
        "_type" : "_doc",
        "_id" : "qObvWm8BJi8CO_fWB71W",
        "_score" : 1.0,
        "_source" : {
          "grade" : 4,
          "weight" : 3
        }
      }
    ]
  • 请求
POST /exams/_search
{
    "size": 0,
    "aggs" : {
        "weighted_grade": {
            "weighted_avg": {
                "value": {
                    "field": "grade",
                    "missing":1
                },
                "weight": {
                    "script": "doc.grade.value",
                    "missing":2
                }
            }
        }
    }
}
  • 返回值:
{
  "took" : 5,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 2,
      "relation" : "eq"
    },
    "max_score" : null,
    "hits" : [ ]
  },
  "aggregations" : {
    "weighted_grade" : {
      "value" : 3.142857142857143
    }
  }
}
阅读 1.1k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进