如何使用Filebeat读取股票自定义日志并在Kibana可视化及处理日期格式问题
解决方案
你提出的股票可视化需求完全可以通过Filebeat->Elasticsearch->Kibana技术栈实现,针对你当前遇到的日期字段类型转换问题,可按以下步骤操作:
1. 优化Ingest Pipeline配置
在你现有grok提取逻辑的基础上,新增日期转换、数值类型转换的处理器即可,完整的pipeline配置如下:
[ { "grok": { "field": "message", "patterns": [ "%{GREEDYDATA:irrelevant_data}Stock = %{GREEDYDATA:Stock}\n%{GREEDYDATA:irrelevant_data}Date = %{GREEDYDATA:Bdate}\n%{GREEDYDATA:irrelevant_data}Volume=%{NUMBER:Volume}\n%{GREEDYDATA:irrelevant_data}Low=%{BASE10NUM:Low}\n%{GREEDYDATA:irrelevant_data}High=%{BASE10NUM:High}\n%{GREEDYDATA:irrelevant_data}Open=%{BASE10NUM:Open}\n%{GREEDYDATA:irrelevant_data}Close=%{BASE10NUM:Close}" ] } }, { "date": { "field": "Bdate", "formats": ["yyyy-MM-dd"], "target_field": "trade_date", "timezone": "Asia/Kolkata" } }, { "convert": { "field": "Volume", "type": "long", "ignore_missing": true } }, { "convert": { "fields": ["Low", "High", "Open", "Close"], "type": "double", "ignore_missing": true } }, { "remove": { "field": ["irrelevant_data", "Bdate"], "ignore_missing": true } } ]
新增处理器说明:
date处理器:识别你提取的Bdate字段格式为yyyy-MM-dd,直接转换为Elasticsearch原生日期类型存入trade_date字段,时区可根据股票所属市场调整,国内股票可替换为Asia/Shanghaiconvert处理器:将成交量、开盘/收盘/最高/最低价字段转换为数值类型,满足Kibana聚合绘图的要求remove处理器:清理冗余字段,节省存储空间
2. 配置索引映射(可选但推荐)
如果是首次创建索引,建议提前定义索引模板固定字段类型,避免Elasticsearch自动推断类型出错:
{ "mappings": { "properties": { "Stock": {"type": "keyword"}, "trade_date": {"type": "date"}, "Volume": {"type": "long"}, "Low": {"type": "double"}, "High": {"type": "double"}, "Open": {"type": "double"}, "Close": {"type": "double"} } } }
3. Kibana可视化操作
配置完成后重新导入数据,刷新Kibana索引模式即可开始绘图:
- 按
Stock字段做分桶过滤,可单独查看单支股票的走势 - X轴选择
trade_date日期直方图,Y轴选择对应指标(收盘价、成交量等)即可生成趋势图 - 可直接使用Kibana Lens可视化组件,拖拽字段快速生成K线、面积图、柱状图等各类图表
提示:如果集群中已有存量旧数据,修改pipeline后需要重新导入数据,或使用reindex API对存量数据重新处理才能生效。
内容的提问来源于stack exchange,提问作者Juliana Ashok
相关产品推荐
相关产品推荐

