You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Elasticsearch如何解析带序数词后缀的日期格式

解决Elasticsearch解析带序数后缀的日期问题

嘿,带th/st这类序数后缀的日期确实容易踩坑!别担心,Joda-Time其实支持通过可选文本匹配来处理这种情况,刚好能解决你的需求。

你只需要在日期格式里把序数后缀用单引号包裹,再放到方括号[]里标记为可选内容,这样Elasticsearch就能自动忽略这些后缀,正确解析日期了。

给你补全后的完整映射代码:

PUT mynewindex
{
  "mappings": {
    "mytype": {
      "properties": {
        "syslog-timestamp": {
          "type": "date",
          "format": "MMMM d['th']['st']['nd']['rd'] yyyy, HH:mm:ss.SSS"
        }
      }
    }
  }
}

来拆解一下这个格式的关键部分:

  • MMMM:匹配完整的英文月份名称(比如你的例子里的April)
  • d:匹配1-2位的日期数字(比如10)
  • ['th']['st']['nd']['rd']:方括号表示这些文本是可选匹配,单引号里的内容就是要忽略的序数后缀,覆盖了所有英文日期的序数情况(1st、2nd、3rd、4th...)
  • yyyy, HH:mm:ss.SSS:匹配4位年份、24小时制的时分秒,以及毫秒数

你可以插入一条测试数据验证一下:

POST mynewindex/mytype/1
{
  "syslog-timestamp": "April 10th 2018, 07:32:45.987"
}

之后用GET mynewindex/mytype/1查询,就能看到这个日期已经被正确解析成Elasticsearch的日期格式啦。

内容的提问来源于stack exchange,提问作者Gamer1120

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:25:50