如何停止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

回到顶部