我正在尝试使用 jdbc 输入插件和 Logstash 将一组事件从 MySQL 数据库保存到弹性搜索中。数据库中的事件记录包含微秒格式的日期字段。实际上,数据库中存在几微秒之间的记录。
导入数据时,Elasticsearch 会将微秒日期格式截断为毫秒格式。如何以微秒格式保存数据? Elasticsearch 文档称他们遵循 JODA 时间 API 来存储日期格式,该格式不支持微秒并通过添加Z在时间戳的末尾。
截断后的时间戳示例:2018-05-02T08:13:29.268Z
数据库中的原始时间戳:2018-05-02T08:13:29.268482
The Z
不是截断的结果,而是 GMT 时区的结果。
ES 也支持微秒,前提是您在映射中指定了正确的日期格式。
如果映射中的日期字段指定如下:
"date": {
"type": "date",
"format": "yyyy-MM-dd'T'HH:mm:ss.SSSSSS"
}
然后,您可以像数据库中一样以精确的微秒精度对日期进行索引
UPDATE
这是一个完整的重新创建,向您展示它的工作原理:
PUT myindex
{
"mappings": {
"doc": {
"properties": {
"date": {
"type": "date",
"format": "yyyy-MM-dd'T'HH:mm:ss.SSSSSS"
}
}
}
}
}
PUT myindex/doc/1
{
"date": "2018-05-02T08:13:29.268482"
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)