ES 中的总数

count total in ES

如果我在 ES 和 dynamoDB 中有以下数据。如何使用查询计算总数 books_borrowed?

用户

user_id: 1, 名称:“ABC”, books_borrwoed: 5, unit_price: 10

user_id: 2, 名称:“死”, books_borrwoed: 5, unit_price: 10

我不能使用循环,因为一个月可以有超过 10k 条记录。

您可以使用sum aggregation,得到books_borrwed字段的总和

{
  "size": 0,
  "aggs": {
    "total_books": {
      "sum": {
        "field": "books_borrwoed"
      }
    }
  }
}

搜索结果将是:

"aggregations": {
    "total_books": {
      "value": 10.0
    }
  }

更新 1:

如果您需要将每本书的价格乘以 5,您可以使用带有求和聚合的脚本

{
  "size": 0,
  "aggs": {
    "total_books": {
      "sum": {
        "script": {
          "lang": "painless",
          "inline": "doc['books_borrwoed'].value * 5"
        }
      }
    }
  }
}

搜索结果将是

"aggregations": {
    "total_books": {
      "value": 50.0
    }
  }

如果您想从数据中获取值,可以使用以下查询

{
  "size": 0,
  "aggs": {
    "total_books": {
      "sum": {
        "script": {
          "lang": "painless",
          "inline": "doc['books_borrwoed'].value * doc['unit_price'].value"
        }
      }
    }
  }
}