logstash 数据类型的修改
logstash 数据类型的修改
logstash 中可以设置字段的类型为integer,float,string,boolean
filter{
mutate{
convert => ["request_time","float"] #设置request_time的类型为float类型
}
}
注意:mutate 除了转化字符值,还支持对数组类型的字段进行转换,即将["1","2"]转换成[1,2],但是不支持哈希字段做类似处理。
input {
file {
path => [
"/home/raw_data/8_31/*.csv"
]
start_position => "beginning" # 从什么位置读取
sincedb_path => "/home/es/sincedb/apk" #sincedb存放路径
type => "apk" #设置type
tags => ["hgw", "gather"]
}
}
filter
{
if [type] == "apk"
{
csv
{
columns => ["Type","ProbeOUI","ProbeVersion","MAC",
"UploadTime","IptvAccount","STBId","OUI","ProductClass",
"SoftwareVersion","HardwareVersion","IpAddress","TeleOUI",
"TeleProductClass","TeleResolution","LogUploadInterval",
"ReportSerialNumber","WorkingTime","CPURate","MEMRate",
"FrameLR","FrameDelay","FrameJitter","VideoStreamingRate",
"RTPLossRate","RTPThroughPut","MdiMLR","MdiType","MdiDF","MAXMdiDF",
"Jitter","MAXJitter","ResponseDelay","ChannelSwitchDelay","StreamBreak",
"EPGDelay","ResourceURL","EPGVisitNum","EPGSuccessNum",
"KaNum","KaDelay"]
separator => "|"
quote_char => "‰"
remove_field => ["ProbeVersion",
"UploadTime","IptvAccount","STBId","ProductClass",
"SoftwareVersion","HardwareVersion","IpAddress","TeleOUI",
"TeleProductClass","TeleResolution","LogUploadInterval",
"ReportSerialNumber","WorkingTime","CPURate","MEMRate",
"FrameLR","FrameDelay","FrameJitter","VideoStreamingRate",
"RTPThroughPut","MdiMLR","MdiType","MdiDF","MAXMdiDF",
"Jitter","MAXJitter","ResponseDelay","ChannelSwitchDelay","StreamBreak",
"EPGDelay","ResourceURL","EPGVisitNum","EPGSuccessNum",
"KaNum","KaDelay"] #删除不需要的字段
}
mutate {
convert => ["RTPLossRate", "integer"] #修改字段类型
}
if ([Type]!="1" or [ProbeOUI]!="YUCHUANG"){
drop{}
}
}
}
output{
if [type] == "apk"
{
elasticsearch
{
hosts => ["*:9200"]
index => "ana-%{type}"
document_type => "%{type}"
flush_size => 8000
idle_flush_time => 10
sniffing => true
template_overwrite => true
codec => "json"
}
}
}
filters/mutate 插件是 Logstash 另一个重要插件。它提供了丰富的基础类型数据处理能力。包括类型转换,字符串处理和字段处理等。
类型转换
类型转换是 filters/mutate 插件最初诞生时的唯一功能。其应用场景在之前 Codec/JSON 小节已经提到。
可以设置的转换类型包括:"integer","float" 和 "string"。示例如下:
filter {
mutate {
convert => ["request_time", "float"]
}
}
注意:mutate 除了转换简单的字符值,还支持对数组类型的字段进行转换,即将 ["1","2"] 转换成 [1,2]。但不支持对哈希类型的字段做类似处理。有这方面需求的可以采用稍后讲述的 filters/ruby 插件完成。
字符串处理
gsub
仅对字符串类型字段有效
gsub => ["urlparams", "[\\?#]", "_"]
split
filter {
mutate {
split => ["message", "|"]
}
}
随意输入一串以|分割的字符,比如 "123|321|adfd|dfjld*=123",可以看到如下输出:
{
"message" => [
[0] "123",
[1] "321",
[2] "adfd",
[3] "dfjld*=123"
],
"@version" => "1",
"@timestamp" => "2014-08-20T15:58:23.120Z",
"host" => "raochenlindeMacBook-Air.local"
}
join
仅对数组类型字段有效
我们在之前已经用 split 割切的基础再 join 回去。配置改成:
filter {
mutate {
split => ["message", "|"]
}
mutate {
join => ["message", ","]
}
}
filter 区段之内,是顺序执行的。所以我们最后看到的输出结果是:
{
"message" => "123,321,adfd,dfjld*=123",
"@version" => "1",
"@timestamp" => "2014-08-20T16:01:33.972Z",
"host" => "raochenlindeMacBook-Air.local"
}
merge
合并两个数组或者哈希字段。依然在之前 split 的基础上继续:
filter {
mutate {
split => ["message", "|"]
}
mutate {
merge => ["message", "message"]
}
}
我们会看到输出:
{
"message" => [
[0] "123",
[1] "321",
[2] "adfd",
[3] "dfjld*=123",
[4] "123",
[5] "321",
[6] "adfd",
[7] "dfjld*=123"
],
"@version" => "1",
"@timestamp" => "2014-08-20T16:05:53.711Z",
"host" => "raochenlindeMacBook-Air.local"
}
如果 src 字段是字符串,会自动先转换成一个单元素的数组再合并。把上一示例中的来源字段改成 "host":
filter {
mutate {
split => ["message", "|"]
}
mutate {
merge => ["message", "host"]
}
}
结果变成:
{
"message" => [
[0] "123",
[1] "321",
[2] "adfd",
[3] "dfjld*=123",
[4] "raochenlindeMacBook-Air.local"
],
"@version" => "1",
"@timestamp" => "2014-08-20T16:07:53.533Z",
"host" => [
[0] "raochenlindeMacBook-Air.local"
]
}
看,目的字段 "message" 确实多了一个元素,但是来源字段 "host" 本身也由字符串类型变成数组类型了!
下面你猜,如果来源位置写的不是字段名而是直接一个字符串,会产生什么奇特的效果呢?
strip
lowercase
uppercase
字段处理
rename
重命名某个字段,如果目的字段已经存在,会被覆盖掉:
filter {
mutate {
rename => ["syslog_host", "host"]
}
}
update
更新某个字段的内容。如果字段不存在,不会新建。
replace
作用和 update 类似,但是当字段不存在的时候,它会起到 add_field 参数一样的效果,自动添加新的字段。
执行次序
需要注意的是,filter/mutate 内部是有执行次序的。其次序如下:
rename(event) if @rename
update(event) if @update
replace(event) if @replace
convert(event) if @convert
gsub(event) if @gsub
uppercase(event) if @uppercase
lowercase(event) if @lowercase
strip(event) if @strip
remove(event) if @remove
split(event) if @split
join(event) if @join
merge(event) if @merge
filter_matched(event)
而 filter_matched 这个 filters/base.rb 里继承的方法也是有次序的。
@add_field.each do |field, value|
end
@remove_field.each do |field|
end
@add_tag.each do |tag|
end
@remove_tag.each do |tag|
end
logstash 数据类型的修改相关推荐
- mysql+yes数据类型,怎样修改mysql列的数据类型?
修改字段(列)数据类型 修改字段的数据类型就是把字段的数据类型转换成另一种数据类型.在 MySQL 中修改字段数据类型的语法规则如下: ALTER TABLE MODIFY 其中: 表名:指要修改数据 ...
- oracle 测试数据类型,oracle修改表字段的数据类型测试
oracle修改表字段的数据类型的测试 思路 将要更改类型的字段名改名新字段以备份: 根据需求,添加一个与要更改类型的字段名同名的字段(原字段已经改名), 然后更新数据, 最后删除改名备份的字段 脚本 ...
- MATLAB 基础知识 数据类型 表 修改单位、说明和表变量名称
本文演示了如何访问和修改变量单位.说明和名称这几种表属性.您也可以使用变量编辑器来编辑这些属性值. 加载样本数据 加载样本患者数据并创建一个表. load patients BloodPressure ...
- mysql修改数据类型_MySQL修改字段类型
mysql> alter table 表名 modify column 字段名 类型.数据库中address表 city字段是varchar(30),修改类型可以用(谨慎修改类型,可能会导致原有 ...
- oracle修改某个数据类型,Oracle 修改某个字段的数据类型三种方式
1.将该列设置为null,再修改其类型(这样会丢失数据) 2.最简单的方法: 假设你的表名为 tab_target create table test as select * from tab_ta ...
- php+oracle新增数据类型,Oracle 修改某个字段的数据类型三种方式
1.将该列设置为null,再修改其类型(这样会丢失数据) 2.最简单的方法: 假设你的表名为 tab_target create table test as select 1.将该列设置为null,再 ...
- SQL Server修改数据类型(修改字段的长度)
ALTER TABLE Table ALTER COLUMN column VARCHAR(MAX) 使用时把下面的两个字段根据需求更改 Table :表名 column :字段名
- 修改mysql 视图字段类型_MySQL中的数据类型,列选项,视图
列的数据类型 整型 类型 取值范围 tinyint -128 - 127 smallint -32768 - 32767(几万) mediumint -8388608 - 8388607(几百万) i ...
- 大数据——Logstash(日志收集)
Logstash(日志收集) ELK Stack Logstash简介 安装Logstash Logstash如何工作 Logstash配置语法(一) Logstash配置语法(二) 输入插件 编解码 ...
最新文章
- 通过JSR250规范 提供的注解@PostConstruct 和@ProDestory标注的方法
- 短文件名漏洞如何修复_短文件名漏洞修复
- [Windows Phone 7]开发分享图片的插件(2)
- vuex其实超简单,只需3步
- 财务自由的味道!台积电股价连创新高,经营团队15人持股价值过亿
- HTML DOM教程 5-HTML DOM节点访问
- 使用DotNet以来一直都有出现这样的问题
- python 读取npy文件
- 缠中说禅形态挖掘之五笔形态
- 易基因 | 国自然选题——易基因RNA甲基化测序技术(m6A m5C)正热门
- 学计算机的管理层,毕业很吃香、高薪岗位多的4个专业,计算机科学上榜,你的专业呢...
- 完美世界前三季营收57亿同比降15% 净利14.4亿同比增80%
- IE浏览器设置默认显示版本
- 抖音的广告位在哪?抖音信息流广告样式?
- B860AV3.1-M2_刷机固件
- 聋校计算机教材教法培训Ppt,聋校语文教材教法学习心得
- xp显示rpc服务器不可用,XP系统如何解决RPC服务器不可用?
- Shiziku 开启adb权限 之 三星S10+ 主板机
- 基于stm32单片机随机数自动摇号抽奖系统
- 音乐标签修改 android,音乐标签修改(Star Music Tag Editor)
热门文章
- 【沙发管家】电视猫3.1.6新版体验:资源更全面,院线大片看到爽!
- 技术分享| 浅谈IM 产品中的“缩略图”功能
- 从0加到5000微信好友的实操方法
- 全球最大油田、金矿、煤矿、铁矿、铜矿,究竟哪个最值钱?
- opengl立体贴图与天空盒
- 企查查滑动验证码实现自动登入--最新99.99%成功
- 价值8800元SEO自动化养权重流量站课程分享(升级版)!
- 字节TikTok暑期实习一面二面三面面经(以OC)
- 2018.09.25【洛谷P4472】【BJWC2018】八维(字符串哈希)(倍增)
- 《让身体和微生物成为朋友》读书笔记