ES API查询日期类型问题

  • Post author:
  • Post category:其他


当template指定”dynamic_date_formats”:[“yyyy-MM-dd HH:mm:ss.SSS”]时候,@timestamp格式还是为日期类型,但是你在logstash使用date插件将日志中的日期时间字段转换为es自动识别的格式(2019-03-11T13:39:40.290Z),这时候es也不会将他识别为date类型,因为他就不符合你的日期类型格式。如果日期类型的格式被识别为string类型,他在es是分词的,你查询的结果是不正确的,但是如果你不让改字段分词,你就必须按照string类型的日期格式去查询,比如:2019-03-11 13:39:08.123这样的格式,你查询的格式就必须为:yyyy-MM-dd HH:mm:ss.SSS,不能写成yyyy-MM-dd HH:mm:ss。尽管使用dynamic_date_formats你将符合该格式的string类型的日期格式转换为date类型了,当你搜索的时候还是必须数据和es中数据存储的格式一样。因为该字段formate格式只有一种日期格式,尽管我写dynamic_date_formats成”dynamic_date_formats”: [“yyyy-MM-dd HH:mm:ss.SSS”,”yyyy-MM-dd HH:mm:ss”,”yyyy-MM-dd”]

所以单独制定该字段为date类型

如图logtime该字段的匹配格式为这些格式,所以你的日期格式为:2018-08-17 00:12:00.903,你也可以输入 2018-08-17 00:12:00查询该字段。

在应用程序中查询:

查询结果为:



版权声明:本文为qq_39669058原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。