格式化阅读ElasticSearch日期

时间:2018-11-16 11:43:57

标签: elasticsearch

这是我对ElasticSearch模型中的属性之一的映射:

"timestamp":{
  "type":"date",
  "format":"dd-MM-yyyy||yyyy-MM-dd'T'HH:mm:ss.SSSZ||epoch_millis"
}

我不确定是否误解了文档。它清楚地说:

  

第一种格式也将用作从毫秒转换回字符串表示形式的格式。

这正是我想要的。我希望能够(如果可能)以dd-MM-yyyy的形式直接读取日期。

不幸的是,当我转到文档本身时(因此,直接访问ElasticSearch的终结点,而不是通过应用程序层访问),我仍然得到:

"timestamp" : "2014-01-13T15:48:25.000Z",

我在这里想念什么?

1 个答案:

答案 0 :(得分:1)

如@Val所述,您将获得值/格式的索引方式。

但是,如果您希望以特定的格式查看日期,而不管索引的格式如何,都可以使用Script Fields。请注意,它将在查询时应用。

下面的查询是您的解决方案。

POST <your_index_name>/_search
{
  "query":{
    "match_all":{ }
  },
  "script_fields":{
    "timestamp":{
       "script":{
         "inline": "def sf = new SimpleDateFormat(\"dd-MM-yyyy\");def dt = new Date(doc['timestamp'].value);def mydate = sf.format(dt);return mydate;"
       }
    }
  }
}

让我知道如何进行。