一尘不染

我可以强制ES以epoch_millis格式返回日期吗?

elasticsearch

我有这个领域的映射

"time": {
              "type": "date",
              "format": "strict_date_optional_time||epoch_millis"
           },

我正在使用此过滤器查询文档:

"range": {
            "time": {
              "gt": "1473157500000",
              "lte": "1473158700000",
            "format": "epoch_millis"
            }

这可以工作并返回文档,但是结果以不同的格式显示时间字段:

"time": "2016-09-06T10:25:23.678",

是否可以强制在epoch_millis中返回查询?


阅读 2765

收藏
2020-06-22

共1个答案

一尘不染

_source始终返回原始文档中的数据。
理想情况下,我认为将_source数据转换为所需的格式以进行呈现或以其他方式在客户端上使用可能更为理想和灵活。
但是,对于上述用例,您可以使用fielddata_fields

fielddata_fields
会在野外数据实际上是如何存储在其中的情况下,该格式返回场date场恰好是epoch_millis

从文档:

允许为每个命中返回字段的字段数据表示形式。字段数据字段可以在未存储的字段上工作。重要的是要了解,使用fielddata_fields参数将导致该字段的术语被加载到内存(缓存),这将导致更多的内存消耗。

例:

post <index>/_search
{
    "fielddata_fields": [
       "time"
    ]    
}
2020-06-22