【问题标题】:elasticsearch - get day of the week in text format like Monday, Tuesday etcelasticsearch - 以文本格式获取星期几,如星期一、星期二等
【发布时间】:2020-05-29 01:47:11
【问题描述】:

我想以文本格式(如星期一、星期二等)将聚合结果作为星期几。我有以下聚合,其中我以星期几的形式得到结果,但数字格式如 1 表示周一,2 表示周二等

"aggs": {
   "perWeekDay": {
       "terms": {
           "script": "doc['order_datetime'].date.dayOfWeek"
       }
    }
}

更新:我正在使用脚本执行此操作,因为我想在需要提及此脚本的 kibana 中添加自定义字段。

【问题讨论】:

  • 您可以在客户端进行简单的映射,将数字映射到日期名称,对吧?
  • 是的,但我试图找出在弹性搜索中有没有办法作为 doc['timestamp'].date.dayOfWeek().getAsText() 我在答案中看到了这个(stackoverflow.com/a/31852124/6582942),有没有办法在新版本中获得它,因为它不起作用。
  • 您可以随时尝试使用EEE 模式格式化您的日期,以获得相应的三个字母的日期。

标签: elasticsearch kibana


【解决方案1】:

通过使用条件做一些脚本工作解决了同样的问题。

"aggs": {
   "perWeekDay": {
       "terms": {
           "script": "(doc['order_datetime'].date.dayOfWeek == 1 ? 'Monday' : (doc['order_datetime'].date.dayOfWeek == 2 ? 'Tuesday' : ((doc['order_datetime'].date.dayOfWeek == 3 ? 'Wednesday' : ((doc['order_datetime'].date.dayOfWeek == 4 ? 'Thursday' : ((doc['order_datetime'].date.dayOfWeek == 5 ? 'Friday' : ((doc['order_datetime'].date.dayOfWeek == 6 ? 'Saturday' : 'Sunday'))))))))))"
       }
    }
}

【讨论】:

    【解决方案2】:

    或者你可以这样做

    doc['timestamp'].date.dayOfWeek + " (" + ["", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"][doc['timestamp'].date.dayOfWeek] + ")"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-13
      • 2016-10-22
      • 1970-01-01
      • 1970-01-01
      • 2021-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多