[elk]Mutate filter plugin增删改查字段
Mutate filter plugin参考: https://www.elastic.co/guide/en/logstash/current/plugins-filters-mutate.html
在线匹配:
http://grokdebug.herokuapp.com/
grok github正则:
https://github.com/kkos/oniguruma/blob/master/doc/RE
logstash grok目录:
/usr/local/logstash/vendor/bundle/jruby/1.9/gems/logstash-patterns-core-4.1.2/patterns
主要研究下这个插件的这些功能
增加字段
删除字段
拆分字段
聚合
add_field: 增加字段
input { stdin { codec => "json" } }
filter {
mutate {
add_field => { "status_true" => "1" }
}
}
output {
stdout { codec => rubydebug }
}
remove_field: 删除字段
input { stdin { codec => "json" } }
filter {
mutate {
remove_field => [isp]
}
}
output {
stdout { codec => rubydebug }
}
rename: 重命名字段名
input { stdin { codec => "json" } }
filter {
mutate {
rename => { "isp" => "province_isp" }
}
}
output {
stdout { codec => rubydebug }
}
replace: 修改字段的值(可调用其他字段值)
input { stdin { codec => "json" } }
filter {
mutate {
replace => { "isp" => "阿里飞飞" }
}
}
output {
stdout { codec => rubydebug }
}
// 相对update多了个调用其他字段的能力
input { stdin { codec => "json" } }
filter {
mutate {
replace => { "isp" => "%{isp}: My new message" }
}
}
output {
stdout { codec => rubydebug }
}
update: 更新某字段的值(不能调用其他字段)
input { stdin { codec => "json" } }
filter {
mutate {
update => { "isp" => "My new message" }
}
}
output {
stdout { codec => rubydebug }
}
convert: 转换字段的值的类型
input { stdin { codec => "json" } }
filter {
mutate {
convert => { "success" => "string" }
}
}
output {
stdout { codec => rubydebug }
}
mutate {
convert => { "dest_Port" => "integer" }
convert => { "source_Port" => "integer" }
}
{"mobile" : "15812345606", "province": "上海", "isp": "中国移动","time" : "2017-12-06T09:30:51.244Z", "success" : false}
####################################################
copy: 复制一个字段(重命名字段名/复制字段值)
input { stdin { codec => "json" } }
filter {
mutate {
copy => { "isp" => "isps" }
}
}
output {
stdout { codec => rubydebug }
}
合并2个字段为1个
input { stdin { codec => "json" } }
filter {
mutate {
replace => { "isp_province" => "%{isp} - %{province}" }
remove_field => [isp, province]
}
}
output {
stdout { codec => rubydebug }
}
拆分2个字段为1个
filter {
mutate {
copy => { "source_field" => "dest_field" }
}
}
拆分值
input { stdin { codec => "json" } }
filter {
mutate {
replace => { "isp_province" => "%{isp} - %{province}" }
remove_field => [isp, province]
}
}
output {
stdout { codec => rubydebug }
}
lowercase: 值大小写转换
input { stdin { codec => "json" } }
filter {
mutate {
lowercase => [ "isp" ]
}
}
output {
stdout { codec => rubydebug }
}
{"mobile" : "15812345606", "province": "上海", "isp": "ZGYD","time" : "2017-12-06T09:30:51.244Z", "success" : false}
uppercase: 值大小写转换
input { stdin { codec => "json" } }
filter {
mutate {
uppercase => [ "isp" ]
}
}
output {
stdout { codec => rubydebug }
}
{"mobile" : "15812345606", "province": "上海", "isp": "zgyd","time" : "2017-12-06T09:30:51.244Z", "success" : false}
split: 值的分割
input { stdin { codec => "json" } }
filter {
mutate {
split => { "isp" => ", " }
}
}
output {
stdout { codec => rubydebug }
elasticsearch {
hosts => [ "localhost:9200" ]
}
}
{"mobile" : "15812345606", "province": "上海", "isp": "移动, 联通, 电信","time" : "2017-12-06T09:30:51.244Z", "success" : false}
{
"@timestamp" => 2017-12-08T01:47:37.860Z,
"province" => "上海",
"success" => false,
"isp" => [
[0] "移动",
[1] "联通",
[2] "电信"
],
"mobile" => "15812345606",
"@version" => "1",
"host" => "no1.ma.com",
"time" => "2017-12-06T09:30:51.244Z"
}
kibana效果

strip: 去掉字段值的收尾空格
Strip whitespace from field. NOTE: this only works on leading and trailing whitespace.
input { stdin { codec => "json" } }
filter {
mutate {
strip => ["field1", "field2"]
}
}
output {
stdout { codec => rubydebug }
}
type&add_tag设type,打tag
打tag为了过滤
input {
stdin {
type => "isp"
codec => "json"
}
}
filter {
mutate {
add_tag => [ "foo_%{isp}" ]
}
}
// 根据type分流到不同的index
output {
stdout { codec => rubydebug }
if [type] == "isp"{
elasticsearch {
hosts => [ "localhost:9200" ]
}
}
}
{
"@timestamp" => 2017-12-08T02:14:12.042Z,
"province" => "上海",
"success" => false,
"isp" => "ZGYD",
"mobile" => "15812345606",
"@version" => "1",
"host" => "lb-212-222.above.com",
"time" => "2017-12-06T09:40:51.244Z",
"type" => "isp",
"tags" => [
[0] "foo_ZGYD"
]
}
参考: https://www.elastic.co/guide/en/logstash/current/plugins-filters-mutate.html#plugins-filters-mutate-common-options
http://www.cnblogs.com/qq27271609/p/4762562.html
id字段
这里没帮我改id,不知道为什么
input { stdin { codec => "json" } }
filter {
mutate {
id => "ABC"
}
}
output {
stdout { codec => rubydebug }
elasticsearch {
hosts => [ "localhost:9200" ]
}
}
{"mobile" : "15812345606", "province": "上海", "isp": "ZGYD","time" : "2017-12-06T10:18:51.244Z", "success" : false}
[elk]Mutate filter plugin增删改查字段的更多相关文章
- [Django框架 - 静态文件配置、request对象方法初识、 pycharm链接数据库、ORM实操增删改查、django请求生命周期]
[Django框架 - 静态文件配置.request对象方法初识. pycharm链接数据库.ORM实操增删改查.django请求生命周期] 我们将html文件默认都放在templates文件夹下 将 ...
- $Django orm增删改字段、建表 ,单表增删改查,Django请求生命周期
1 orm介绍 ORM是什么 ORM 是 python编程语言后端web框架 Django的核心思想,“Object Relational Mapping”,即对象-关系映射,简称ORM. 一 ...
- django ORM 增删改查 模糊查询 字段类型 及参数等
ORM 相关 #sql中的表 #创建表: CREATE TABLE employee( id INT PRIMARY KEY auto_increment , name VARCHAR (), gen ...
- [译]聊聊C#中的泛型的使用(新手勿入) Seaching TreeVIew WPF 可编辑树Ztree的使用(包括对后台数据库的增删改查) 字段和属性的区别 C# 遍历Dictionary并修改其中的Value 学习笔记——异步 程序员常说的「哈希表」是个什么鬼?
[译]聊聊C#中的泛型的使用(新手勿入) 写在前面 今天忙里偷闲在浏览外文的时候看到一篇讲C#中泛型的使用的文章,因此加上本人的理解以及四级没过的英语水平斗胆给大伙进行了翻译,当然在翻译的过程中发 ...
- django基础之day04,必知必会13条,双下划线查询,字段增删改查,对象的跨表查询,双下划线的跨表查询
from django.test import TestCase # Create your tests here. import os import sys if __name__ == " ...
- Django静态文件配置-request方法-ORM简介-字段的增删改查
app的创建注意事项: 在Django新创建的app要在seetings.py中添加注册,才会生效 创建app:django-adminapp an startapp app名称 或者 python3 ...
- Sql Server xml 类型字段的增删改查
1.定义表结构 在MSSM中新建数据库表CommunicateItem,定义其中一个字段ItemContentXml 为xml类型 2.编辑表数据,新增一行,发现xml类型不能通过设计器录入数据. 需 ...
- 一、数据库表中字段的增删改查,二、路由基础.三、有名无名分组.四、多app共存的路由分配.五、多app共存时模板冲突问题.六、创建app流程.七、路由分发.八、路由别名,九、名称空间.十、反向解析.十一、2.x新特性.十二、自定义转换器
一.数据库表中字段的增删改查 ''' 直接在modules中对字段进行增删改查 然后在tools下点击Run manage.py Task执行makemigrations和migrate 注意在执行字 ...
- MyBatis入门2_增删改查+数据库字段和实体字段不一致情况
本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! 当数据库字段和实体bean中属性不一致时 之前数据库P ...
随机推荐
- Node 多进程并发控制小模块 - lockman
介绍 lockman 是一个用于多进程的并发控制锁, 类似一些语言中(比如 C#)的 lock 关键字可以用来确保代码块完成运行,而不会被其他进程中断.它可以把一段代码定义为互斥段(critical ...
- Linux进程间通信:管道,信号量,消息队列,信号,共享内存,套接字
Linux下的进程通信手段基本上是从UNIX平台上的进程通信手段继承而来的.而对UNIX发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间 ...
- django的过滤和搜索排序功能django-filter
参考: 1.https://django-filter.readthedocs.io/en/master/guide/usage.html#the-filter 2.https://www.cnblo ...
- Element 'beans' cannot have character [children]
在编写spring的applicationContext.xml文件时,出现了: Element 'beans' cannot have character [children], because t ...
- 数学图形(2.2)N叶结
上一节讲的三叶结,举一反三,由三可到无穷,这一节讲N叶结 再次看下三叶结的公式: x = sin(t) + 2*sin(2*t)y = cos(t) - 2*cos(2*t) 将其改为: x = si ...
- 使用CadLib实现CAD(dxf、dwg格式)文件的读取和显示 【转】
参考文章:CadLib 3.5 documentationhttps://www.woutware.com/doc/cadlib3.5/Index.aspx 读取:定义DxfModel类型的变量mod ...
- React同构直出优化总结
收录待用,修改转载已取得腾讯云授权 作者:郭林烁 joeyguo 原文地址 React 的实践从去年在 PC QQ家校群开始,由于 PC 上的网络及环境都相当好,所以在使用时可谓一帆风顺,偶尔遇到点小 ...
- AjaxPro因为汉字文件夹引发的IE兼容性问题
公司一老项目.须要使用AjaxPro.引用dll,config配置,pageload注冊一直都没有问题. google浏览器測试成功. 奇怪的是在IE中英勇的爆掉了... .. 报错: eval(&q ...
- 同一个数据库实例,不同用户下多表创建视图,Hibernate完毕ORM映射,Spring整合,后台实现
1.同一个数据库实例.同用户,多表创建视图 2.同一个数据库实例,不同用户下.多表创建视图 3.同一个数据库,不同数据库实例,多表创建视图 4.不同类型数据库,多表创建视图 1.同一个数据库实例.同用 ...
- (剑指Offer)面试题55:字符流中第一个不重复的字符
题目: 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出前 ...