Logstash【从无到有从有到无】【附加】字段参考深入分析

目录

1.字段参考深入分析

1.1.正式语法

1.1.1.字段参考文字(Field Reference Literal)

1.1.2.字段参考(Event APIs)

1.1.3.路径片段(Path Fragment)

1.1.4.字段名称(Field Name)

1.1.5.复合字段参考

1.1.6.复合场参考的规范表示

1.1.7.嵌入式字段参考


1.字段参考深入分析

能够通过名称引用字段或字段集合通常很有用。为此,您可以使用Logstash字段引用语法。

访问字段的语法指定了字段的完整路径,每个片段都包含在方括号中。

字段引用可以在管道配置中的条件语句中逐字表示,作为管道插件的字符串参数,或者管道插件将使用的sprintf语句中:

filter {
  #  +----literal----+     +----literal----+
  #  |               |     |               |
  if [@metadata][date] and [@metadata][time] {
    mutate {
      add_field {
        "[@metadata][timestamp]" => "%{[@metadata][date]} %{[@metadata][time]}"
      # |                      |    |  |               |    |               | |
      # +----string-argument---+    |  +--field-ref----+    +--field-ref----+ |
      #                             +-------- sprintf format string ----------+
      }
    }
  }
}

 

1.1.正式语法

下面是Field Reference的正式语法,附有注释和示例。

 

1.1.1.字段参考文字(Field Reference Literal)

字段参考文字是一个或多个的序列路径片段,可以直接在Logstash管道使用条件语句而没有任何附加的引用(例如[request][response][status])。

fieldReferenceLiteral
  : ( pathFragment )+
  ;

 

1.1.2.字段参考(Event APIs)

Event API用于操作事件字段或使用sprintf语法的方法比它们作为字段引用所接受的管道语法更灵活。顶级字段可以通过其字段名称直接引用,而不使用方括号,并且对复合字段引用有一些支持,简化了以编程方式生成的字段引用的使用。

因此,与事件API一起使用的字段引用是以下之一:

  • 单个Field Reference Literal ; 
  • 单个字段名称(引用顶级字段); 
  • 单个复合(Composite)字段参考
eventApiFieldReference
  : fieldReferenceLiteral
  | fieldName
  | compositeFieldReference
  ;

 

1.1.3.路径片段(Path Fragment)

路径片段是用方括号括起来的字段名(例如,[request])。

pathFragment
  : '[' fieldName ']'
  ;

 

1.1.4.字段名称(Field Name)

字段名:  不是方括号的字符序列([ or ])

fieldName
  : ( ~( '[' | ']' ) )+
  ;

 

1.1.5.复合字段参考

在某些情况下,可能需要以编程方式从一个或多个字段引用组成字段引用,例如在操作插件中的字段时或使用Ruby Filter插件和Event API时。

fieldReference = "[path][to][deep nested field]"
compositeFieldReference = "[@metadata][#{fieldReference}][size]"
# => "[@metadata][[path][to][deep nested field]][size]"

 

1.1.6.复合场参考的规范表示

可接受的复合场参考典型场参考表示

+[[deep][nesting]][field]+

+[deep][nesting][field]+

+[foo][[bar]][bingo]+

+[foo][bar][bingo]+

+[[ok]]+

+[ok]+

复合字段参考是一个或多个的序列路径片段嵌入式字段参考

compositeFieldReference
  : ( pathFragment | embeddedFieldReference )+
  ;

事件API支持复合字段引用,但管道配置中支持复合字段引用

 

1.1.7.嵌入式字段参考

embeddedFieldReference
  : '[' fieldReference ']'
  ;

一个嵌入式字段参考是一个字段参考,其本身包在方括号([]),并且可以是一个的部件复合字段参考

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值