我已经使用XML滤波器插件从logstash到elasticsearch成功摄入数据,但是所有字段类型均为"文本"类型。
有没有一种方法可以手动或自动指定正确的类型?
我发现以下技术非常适合我的使用:
LogStash将过滤数据并将字段从默认的文本更改为您想要的任何形式。该文档将在这里找到。文档中给出的示例是:
filter {
mutate {
convert => { "fieldname" => "integer" }
}
}
您将其添加到/etc/logstash/conf.d/02 -... 文件中。我相信这种做法的缺点是,从我的理解中,不建议更改进入ES。
的数据。这样做后,您可能会遇到这个问题。如果您有这个问题,并且您的数据库是一个测试数据库日期旧数据和新数据之间会发生冲突(。如果您不能仅删除旧数据,请阅读我链接的链接中的答案。
您想做的是指定映射模板。
PUT _template/template_1
{
"index_patterns": ["te*", "bar*"],
"settings": {
"number_of_shards": 1
},
"mappings": {
"type1": {
"_source": {
"enabled": false
},
"properties": {
"host_name": {
"type": "keyword"
},
"created_at": {
"type": "date",
"format": "EEE MMM dd HH:mm:ss Z YYYY"
}
}
}
}
}
更改设置以符合您的需求,例如列出属性以映射您要映射的内容。
设置 index_patterns 尤其重要,因为它告诉弹性如何应用此模板。您可以设置一系列索引模式,并可以使用 *适合通配符。即LogStash的默认值是按日期旋转。它们看起来像logstash-2018.04.23
,因此您的模式可以是logstash-*
,并且与模式匹配的任何模板都会接收模板。
如果要根据某种模式进行匹配,则可以使用动态模板。
编辑:在此处添加一些更新,如果您想为您应用模板,以下是要注意的设置的链接。