【Elasticsearch】Elasticsearch 在 Date Histogram Aggregation 中使用 painless 转换时间的时间进行统计直方图

文章介绍了如何在Elasticsearch中利用Painless脚本语言处理keyword类型的时间字段,以便在DateHistogramAggregation中进行日期直方图统计。Painless是Elasticsearch5.0引入的安全、高性能的脚本语言,允许在DSL中进行复杂的逻辑处理。文中提供了具体的DSL示例和SpringDataRestTemplate的实现方式,展示了如何转换时间格式并进行范围查询以获取订单趋势图。

Elasticsearch 在 Date Histogram Aggregation 中使用 pipeline 教程


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

最近工作中一直在使用Elasticsearch 的 [agg] 相关操作,一直在做大数据量的统计和报表工作。然后碰到一个比较棘手的问题,就是还在统计过程发现一个年代比久远的索引,其中索引的时间类型是以keyword类型进行录入的,就导致如果通过时间进行聚合的时候就会有很多的ES的高级特性无法使用比如说,笔者一下要将的 Date Histogram Aggregation 日期直方图 ,这时候就需要用到ES为我们提供的一个很不错的高级特性,叫做 Scriptpainless

大致需求的样子要做出这样的数据进行
在这里插入图片描述


一、painless 是什么?

ElasticStack在升级到5.0版本之后,带来了一个新的脚本语言,painless。
在这里插入图片描述
在7.17的最新文档以及给出了解释:
大致意思是:
**Painless是一种简单、安全的脚本语言,专为与 Elasticsearch 一起使用而设计。它是 Elasticsearch 的默认脚本语言,可以安全地用于内联和存储脚本。 **

  • 高性能。painless在es的运行速度是其他语言的数倍。
  • 安全。使用白名单来限制函数与字段的访问,避免了可能的安全隐患
  • 可选类型。你可以在脚本当中使用强类型的编程方式或者动态类型的编程方式。
  • 语法。扩展了java的基本语法以兼容groove风格的脚本语言特性,使得plainless易读易写
  • 有针对的优化。这门语言是为elasticsearch专门定制的。

二、使用步骤

1.DSL

GET /你的索引名字/_search
{  
  "aggs": {  
    "avg_per_day": {  
      "date_histogram": {  
        "field": "order_date",  
        "interval": "day",  
        "script": {  
          "source": "return ZonedDateTime.from(ZonedDateTime.of(LocalDateTime.parse(doc['createTime'], DateTimeFormatte
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值