date - Elastic(搜索):查询结果日期格式与存储格式不同

标签 date format elasticsearch

当我解析查询结果时, flex 日期格式转换出现问题。所以我在日期字段上有一个默认映射,如下所示:

"timestamp" : {
  "type" : "date",
  "format" : "dateOptionalTime"
}

并存储为"timestamp":"2015-05-06T08:52:56.387Z"如果我对该字段执行最大聚合,则会得到一个长值:
"timestamp_max": {
  "value": 1430902071110
}

但是我希望该值与存储的值相同。我读到可以在聚合中指定格式,但无法正常工作。我试过了:
"aggregations":{
  "timestamp_max":{
    "max":{
      "field":"timestamp",
      "format" : "dateOptionalTime"
    }
  }
}

但这给出了SearchParseException ... SearchParseException[[logstash-2015.05.07][0]: query[ConstantScore(BooleanFilter(+no_cache(timestamp:[1429357190515 TO 1431949190515])))],from[-1],size[-1]: Parse Failure [Unexpected token VALUE_STRING in [timestamp_max].]]; ...
我究竟做错了什么?

最好的祝福,
一月

最佳答案

你快到了。您只需要使用correct formatting pattern指定日期格式,如下所示:

"aggregations":{
  "timestamp_max":{
    "max":{
      "field":"timestamp",
      "format" : "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
    }
  }
}

请注意,这仅从ES 1.5.0起可用。请参阅ES github上的related issue

关于date - Elastic(搜索):查询结果日期格式与存储格式不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30302309/

相关文章:

java - 安卓。如何获取音频文件格式?

http - 在Logstash中按时间戳查询项目

php - 如何使用 PHPExcel 库从 excel 中获取日期

php - mysql 日期显示 30/11/-000 而不是 0000-00-00

c++ - 如何判断两个源文件是否生成功能相同的代码?

java - Log4j 直接记录到 elasticsearch 服务器

regex - Elasticsearch 脚本正则表达式聚合

Javascript 日期 |将日期设置为一年的最后一秒

asp.net - 在第二个文本框中获取下周

c# - 文件上传控件仅上传PDF