任何与decimal十进制时间戳匹配的elasticsearch数据类型?

时间:2017-02-10 08:28:17

标签: elasticsearch logstash filebeat

我有一个来自日志文件的时间戳,如{“ts”:“1486418325.948487”} 我的基础设施是“filebeat”5.2.0 - > “elasticsearch”5.2

我尝试将“ts”映射到“date” - “epoch_second”但是在filebeat中写入失败。

PUT /auth_auditlog
{
  "mappings": {
    "auth-auditlogs": {
      "properties": {
        "ts": {
          "type":   "date",
          "format": "epoch_second"
        }
      }
    }
  }
}

filebeat错误消息类似

WARN Can not index event (status=400): {"type":"mapper_parsing_exception","reason":"failed to parse [ts]","caused_by":{"type":"illegal_argument_exception","reason":"Invalid format: \"1486418325.948487\""}}

我尝试使用“1486418325”是可以的,所以我猜es不接受十进制格式的时间戳。但是,python默认输出时间戳是这种格式。

我的目的是在elasticsearch中正确输入。我想使用ts作为elasticsearch中的原始时间戳。 除了更改原始日志数据外,欢迎使用任何解决方案!

1 个答案:

答案 0 :(得分:1)

Filebeat没有针对此类内容的处理器。您无法用Filebeat中的日志替换@timestamp。您可以做的是将该内容发送到logstash并让date过滤器解析时代。

date {
  match => ["timestamp","UNIX","UNIX_MS"]
}

另一种选择是使用摄取节点。虽然我自己也没有使用它,但它似乎也能够完成这项工作。查看文档here