logstash - Logstash 将“yyyy-MM-dd”转换为“yyyy-MM-dd'T'HH:mm:ss.SSSZ”
问题描述
我使用 logstash-input-jdbc 插件将我的数据从 mysql 同步到 elasiticsearch。但是,在elasticsearch中查看数据时,发现所有日期类型的字段格式都从“yyyy-MM-dd”变成了“yyyy-MM-dd'T'HH:mm:ss.SSSZ” .我有近200个类型为日期的字段,所以我想知道如何配置logstash,以便它可以输出格式“yyyy-MM-dd”而不是“yyyy-MM-dd'T'HH:mm:ss .SSSZ”。
解决方案
Elasticsearch 将日期存储为 UTC 时间戳:
在内部,日期被转换为 UTC(如果指定了时区)并存储为一个长数,表示自时代以来的毫秒数。
日期查询在内部转换为对此长表示的范围查询,聚合和存储字段的结果根据与字段关联的日期格式转换回字符串。
因此,如果您想保留 yyyy-MM-dd 格式,则必须将其存储为 a keyword
(然后您将无法对其进行范围查询)。
您可以将 Kibana 的显示更改为仅显示 yyyy-MM-dd 格式,但请注意,它会将日期转换为查看器的时区,这可能会导致与您在输入字段中输入的日期不同。
如果要将日期提取为字符串,则需要为相关索引创建映射以防止默认日期处理。
推荐阅读
- sql - SQL Server - 当 sql server 和应用程序在同一台服务器上时,关闭外部端口并作为 localhost 工作
- oracle - Oracle:使用“立即执行”和行数删除行
- sql - 使用 CASE 为 SQLite 中的 COUNT 语句设置条件
- c# - 覆盖 ASP .NET/EFCore 3.0 中未调用的 SaveChanges()
- sql - 检查表中是否存在作为参数给出的 oracle 函数值
- css - React 应用程序 - 避免样式被其他 CSS 覆盖
- node.js - 如何等到所有嵌套函数都执行完
- excel - 跨多个工作表查找公式
- python - django.core.exceptions.ValidationError: ["'_auth_user_id' value must be an integer."] Django 错误
- vim - Unexpected SPACE character while in : 在 Neovim 中按减号键 (-) 时探索