重新索引Elasticsearch以将unixtime转换为日期

时间:2019-06-06 13:27:15

标签: elasticsearch elasticsearch-painless

我有一个Elasticsearch索引,该索引使用@timestamp字段将日期存储在date字段中。

有许多记录缺少@timestamp字段,但是有一个timestamp字段包含unix时间戳。 (是从PHP生成的,所以是几秒钟,而不是毫秒)

请注意,timestamp字段是日期类型,但是数字数据似乎存储在此处。

如何在重新索引中使用无痛脚本并将@timestamp设置在缺少的地方, IF 有一个带有unix时间戳的数字timestamp字段?

这是我要转换的示例记录。

  {
    "_index": "my_log",
    "_type": "doc",
    "_id": "AWjEkbynNsX24NVXXmna",
    "_score": 1,
    "_source": {
      "name": null,
      "pid": "148651",
      "timestamp": 1549486104
    }
  },

1 个答案:

答案 0 :(得分:0)

您看过Elasticsearch的{​​{3}}吗?

ingest module

  

解析字段中的日期,然后将日期或时间戳记用作   文档的时间戳。默认情况下,日期处理器会添加   将日期解析为名为@timestamp的新字段。您可以指定一个   通过设置target_field配置参数来设置不同的字段。   同一日期处理器中支持多种日期格式   定义。它们将顺序用于尝试解析日期   字段,以相同的顺序将它们定义为处理器的一部分   定义。

它确实满足您的要求:)在您的重新索引语句中,您可以通过此提取处理器定向文档。

如果您需要更多帮助,请告诉我,然后我可以跳到电脑后面帮忙:D