Field [@timestamp] of type [keyword] does not support custom formats

问题描述

执行es的聚合histogram 或者date_histogram 返回错误。

传入报文:

{
  "size":0,
  "aggs":{
    "calltime":{
      "date_histogram":{
        "field":"@timestamp",
        "interval":"minute",
        "format" : "yyyy-MM-dd'T'HH:mm:ss"
      }
    }
  }
}

返回报错:

{
   "error":    {
      "root_cause": [      {
         "type": "illegal_argument_exception",
         "reason": "Field [@timestamp] of type [keyword] does not support custom formats"
      }],
      "type": "search_phase_execution_exception",
      "reason": "all shards failed",
      "phase": "query",
      "grouped": true,
      "failed_shards": [      {
         "shard": 0,
         "index": "esb-srvlog-2019-07-21",
         "node": "nruodlnbT8u0tJKTzRs9Eg",
         "reason":          {
            "type": "illegal_argument_exception",
            "reason": "Field [@timestamp] of type [keyword] does not support custom formats"
         }
      }]
   },
   "status": 400
}

原因分析

先通过mapping看看索引的mapping:
在这里插入图片描述
发现@timestamp这个字段是被设置成了 keyword类型。所以es将该字段只是视为关键字的字符串,而不是日期的类型。故也就无法对该字段进行日期的统计。

解决方法

出现类似上面的这种问题,只有重新设置索引类型,将该字段改成所期望的类型,这里应该是。通过PUT方法。如:
在这里插入图片描述

需要注意的是,重新设置索引后只能对后面插入的文档有效,之前的文档类型不会被改变。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值