我们正在通过logstash推送ElasticSearch中的数据。问题是对于IP地址,它被存储为字符串而不是IP数据类型。是否可以通过grok指定它?我已经尝试过以下代码,但它似乎不起作用。
ip { match => [ "ip", "IPV4" ] }
答案 0 :(得分:1)
无法在logstash中实现映射,因为无法在grok内设置复杂类型:
默认情况下,所有语义都保存为字符串。如果你想转换 语义的数据类型,例如将字符串更改为整数 用目标数据类型后缀它。例如%{NUMBER:num:int} 它将num语义从字符串转换为整数。的目前 唯一支持的转换是int和float。
但是,有thoughts about that feature。
目前,您需要指定自定义elasticsearch template。从logstash's default elasticsearch template开始,在属性部分添加一行:
<!DOCTYPE HTML>
<html manifest="cache.manifest">
<head>
在您的logstash配置的elasticsearch output中设置"ip": { "type": "ip"},
的文件路径:
template.json
请注意,模板仅适用于新索引。