在ElasticSearch中按日期范围获取计数和分组

0x6upsns  于 2022-12-03  发布在  ElasticSearch
关注(0)|答案(2)|浏览(222)

是否有办法获得行数并按小时、天或月对它们进行分组。
例如,假设我有消息

_source{
"timestamp":"2013-10-01T12:30:25.421Z",
"amount":200
}
_source{
"timestamp":"2013-10-01T12:35:25.421Z",
"amount":300
}
_source{
"timestamp":"2013-10-02T13:53:25.421Z",
"amount":100
}
_source{
"timestamp":"2013-10-03T15:53:25.421Z",
"amount":400
}

有没有办法单独获得{date,sum}行的内容(不一定是这种格式,只是想知道有没有办法可以实现这一点)

{
{"2013-10-01T12:00:00.000Z", 500},
{"2013-10-02T13:00:00.000Z", 100},
{"2013-10-03T15:00:00.000Z", 400}
}

谢谢你

rta7y2nd

rta7y2nd1#

请尝试使用聚合。

{     
  "aggs": {
    "amount_per_month": {
      "date_histogram": {
        "field": "timestamp",
        "interval": "week"
      },
      "aggs": {
        "total_amount": {
          "sum": {
            "field": "amount"
          }
        }
      }
    }
  }
}

此外,如果要计算索引数,请将sum content替换为:

"sum": {
  "script": "1"
}

希望能有所帮助。

ha5z0ras

ha5z0ras2#

我需要查询从ElasticeSearch中获取数据,在我们的平台上进行月明智的计数和年明智的注册客户计数。下面的查询是完美的工作,并给出正确的数据:
此处:自定义加载日期:当客户
方法类型:后处理
网址:http://SomeIP:9200/customer/_search?size = 0
按月汇总客户的ES查询

{     
  "aggs": {
    "amount_per_month": {
      "date_histogram": {
        "field": "CustOnboardedOn",
        "interval": "month"
      }   
  }
}
}

ES查询:年度汇总。

{     
  "aggs": {
    "amount_per_month": {
      "date_histogram": {
        "field": "CustOnboardedOn",
        "interval": "year"
      }   
  }
}
}

相关问题