如何停止Logstash在ElasticSearch中创建默认映射
我正在使用logstash将日志输入ElasticSearch。我将logstash输出配置为:
input {file {
path => "/tmp/foo.log"
codec =>
plain {
format => "%{message}"
}
}
}
output {
elasticsearch {
#host => localhost
codec => json {}
manage_template => false
index => "4glogs"
}
}
我注意到,一旦启动logstash,它就会在ES中创建一个映射(日志),如下所示。
{ "4glogs": {
"mappings": {
"logs": {
"properties": {
"@timestamp": {
"type": "date",
"format": "dateOptionalTime"
},
"@version": {
"type": "string"
},
"message": {
"type": "string"
}
}
}
}
}
}
如何防止Logstash创建此映射?
我现在也解决了此错误。
正如John
Petrone在下面所述,定义映射后,必须确保文档符合该映射。就我而言,我已经定义了“类型:嵌套”的映射,但是logstash的输出是一个字符串。因此,我从logstash配置中删除了所有编解码器(无论是json还是plain),这使json文档无需更改即可通过。
这是我的新logstash配置(带有一些用于多行日志的其他过滤器)。
input { kafka {
zk_connect => "localhost:2181"
group_id => "logstash_group"
topic_id => "platform-logger"
reset_beginning => false
consumer_threads => 1
queue_size => 2000
consumer_id => "logstash-1"
fetch_message_max_bytes => 1048576
}
file {
path => "/tmp/foo.log"
}
}
filter {
multiline {
pattern => "^\s"
what => "previous"
}
multiline {
pattern => "[0-9]+$"
what => "previous"
}
multiline {
pattern => "^$"
what => "previous"
}
mutate{
remove_field => ["kafka"]
remove_field => ["@version"]
remove_field => ["@timestamp"]
remove_tag => ["multiline"]
}
}
output {
elasticsearch {
manage_template => false
index => "4glogs"
}
}
回答:
您将需要一个映射来将数据存储在Elasticsearch中并进行搜索-
这就是ES知道如何索引和搜索那些内容类型的方式。您可以让logstash动态创建它,也可以阻止它进行创建,而是手动创建。
请记住,您不能更改现有映射(尽管可以添加到它们中)。因此,首先,您将需要删除现有索引。然后,您将修改设置以防止创建动态映射。同时,您将要创建自己的映射。
例如,这将为logstash数据创建映射,但也通过“ strict”限制任何动态映射的创建:
$ curl -XPUT 'http://localhost:9200/4glogs/logs/_mapping' -d '{
"logs" : {
"dynamic": "strict",
"properties" : {
"@timestamp": {
"type": "date",
"format": "dateOptionalTime"
},
"@version": {
"type": "string"
},
"message": {
"type": "string"
}
}
}
}
'
请记住,索引名称“ 4glogs”和类型“ logs”必须与logstash的内容匹配。
对于我的生产系统,我通常喜欢关闭动态映射,因为它可以避免意外创建映射。
如果要调整动态映射,以下链接应该很有用:
https://www.elastic.co/guide/zh-CN/elasticsearch/guide/current/dynamic-
mapping.html
http://www.elasticsearch.org/guide/zh-CN/elasticsearch/guide/current/custom-
dynamic-
mapping.html
http://www.elasticsearch.org/guide/zh-CN/elasticsearch/guide/current/dynamic-
mapping.html
以上是 如何停止Logstash在ElasticSearch中创建默认映射 的全部内容, 来源链接: utcz.com/qa/415154.html