我正在将aws cloudwatch日志(从node.js lambda应用程序)流式传输到aws elasticsearch集群,以便在kibana中查看度量。
我传输的一些数据是数字的,但是被记录为字符串。我已经更新了应用程序代码,将这些记录为数值,但是我不能在kibana中对这些字段使用数值可视化,因为字段类型现在是混合的——即在kibana设置中,它说 13 fields are defined as several types (string, integer, etc) across the indices that match this pattern...
有没有一种简单的方法来强制es/kibana将该字段始终视为数字?或者将所有以前记录的数据从字符串转换为数字?
我的搜索结果表明,我可以使用esapi进行某种类型的变异,但我无法追踪这个api调用的实际外观。免责声明:elasticsearch noob。
2条答案
按热度按时间knsnq2tg1#
以下是我创建的脚本字段,感谢阿披实的回答:
6uxekuva2#
这里有两种方法:
将字符串中的所有数据转换为数值。基本上,您必须重新索引整个数据(我们不能只需单击一下就更改字段类型),确保字符串转换为数值。重新索引的最佳方法是使用摄取节点管道
优点:建立在这些数据上的可视化效果会很快,因为数据已经是数字格式了。
缺点:如果数据集很大,转换可能需要很长时间。
将所有数据保持为字符串格式,并使用kibana中的脚本字段,以便在运行时(例如,在可视化时)将数据转换为数字格式
优点:不需要设置一个全新的管道来转换数据
缺点:对于您的基础设施来说,在大时间范围内进行可视化可能太慢/太重。