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

any elasticsearch datatype matching decimal timestamp?

我有一个来自日志文件的时间戳,例如 {"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中正确输入。我想在 elasticsearch 中使用 ts 作为原始时间戳。 除了更改原始日志数据外,欢迎任何解决方案!

Filebeat 没有处理此类内容的处理器。您不能将 @timestamp 替换为您的日志在 Filebeat 中的那个。您可以做的是将这些东西发送到 logstash,然后让 date 过滤器解析纪元。

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

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