原计划从网络设备的日志中提取某些字段,转换成数字型,以方便以后进行计算统计。但发现,虽然在grok中定义了按INT或NUMBER提取字段,但通过kibana看时,一开始是?,等到在index pattern中refresh field list以后,就都变成了字符串类型,而且还不能更改了。如何解决这个问题呢。
logstash, elastic search和kibana的版本都是7.3.0. 下面是最简单的配置信息。
if "test" in [tags] {
grok {
match => { "message" => "%{INT:int} %{NUMBER:number} %{WORD:word}" }
}
}
日志为:
10 10 test
最后从kibana上查到这个日志为:
如何解决这个问题呢?
logstash, elastic search和kibana的版本都是7.3.0. 下面是最简单的配置信息。
if "test" in [tags] {
grok {
match => { "message" => "%{INT:int} %{NUMBER:number} %{WORD:word}" }
}
}
日志为:
10 10 test
最后从kibana上查到这个日志为:
如何解决这个问题呢?
8 个回复
mobikarl
赞同来自: Klein
另外已建立的索引需要删掉,否则mapping已确定改了也没用
haoyanfeiyun
赞同来自:
mobikarl
赞同来自:
具体解释看这个:Optionally you can add a data type conversion to your grok pattern. By default all semantics are saved as strings. If you wish to convert a semantic’s data type, for example change a string to an integer then suffix it with the target data type. For example %{NUMBER:num:int} which converts the num semantic from a string to an integer. Currently the only supported conversions are int and float.
Klein
赞同来自:
match => { "message" => "%{INT:xxx:INT} %{NUMBER:yyy:INT} %{WORD:word}" }
Klein
赞同来自:
Klein
赞同来自:
match => { "message" => "%{INT:xx:int} %{NUMBER:yy:int} %{WORD:word}" }
neu_cyd
赞同来自:
skyRain
赞同来自: