【问题标题】:Logstash/ElasticSearch: guesses wrong for datatype for fieldLogstash/ElasticSearch:字段数据类型猜测错误
【发布时间】:2013-03-22 23:00:28
【问题描述】:

我尝试导入 Logstash 的日志文件包含一个有时看起来像日期/时间但有时却不是的字段。不幸的是,第一次出现看起来像日期/时间,有人(logstash 或 elasticsearch)决定将该字段定义为日期/时间。在尝试导入稍后的日志记录时,Elasticsearch 出现异常:

Failed to execute [index ...]  
org.elasticsearch.index.mapper.MapperParsingException: Failed to parse [@fields.field99]  
at org.elasticsearch.index.mapper.core.AbstractFieldMapper.parse(AbstractFieldMapper.java:320)  
at org.elasticsearch.index.mapper.object.ObjectMapper.serializeValue(ObjectMapper.java:587)  
...  
Caused by: java.lang.IllegalArgumentException: Invalid format: "empty"  
at org.elasticsearch.common.joda.time.format.DateTimeFormatter.parseMillis(DateTimeFormatter.java:747)  
...  

问题:如何告诉 logstash/elasticsearch 不要将此字段定义为日期/时间?我希望将日志中的所有字段(一个明确的时间戳字段除外)都定义为文本。

问题:似乎logstash在看到elasticsearch抛出异常的日志文件后放弃了尝试从日志文件导入记录。如何让 logstash 忽略此异常并继续尝试从日志文件中导入其他记录?

【问题讨论】:

  • 就是这样!也许您可以将答案添加为真正的答案,而不是在问题本身中,这是值得的。
  • stackoverflow 不会让我在提出问题后这么快就回答我自己的问题,因为我是一个名声不好的菜鸟:D
  • 在等待了回答我自己的问题所需的时间后,我能够将答案移至下面的正确答案。
  • 你不再是菜鸟了,我对你的问题和答案都投了赞成票;)

标签: elasticsearch logstash


【解决方案1】:

我自己找到了第一个问题的答案。

在通过 Logstash 添加数据之前,我必须为 Elasticsearch 设置默认值,以将字段视为“字符串”而不是“日期”。

我通过创建一个这样的 defaults.js 文件来做到这一点:

{  
    "template": "logstash-*",  
    "mappings": {  
        `"_default_"`: {  
            "dynamic_templates": [{  
                "fields_template": {  
                    "mapping": { "type": "string" },  
                    "path_match": "@fields.*"  
                }  
            }]  
        }  
    }  
}

并告诉 Elasticsearch 在通过 Logstash 添加任何数据之前使用它:

curl -XPUT 'http://localhost:9200/_template/template_logstash/' -d @defaults_for_elasticsearch.js

希望这对其他人有所帮助。

【讨论】:

  • 稍微详细说明一下:您使用put index template api 提交了索引模板。为什么?因为logstash会创建多个索引,通常每天一个。所有匹配模式的索引都将获得指定的映射。此外,您使用了_default_ 映射,以便所有类型都获得指定的映射。在映射中,您使用了 dynamic template ;)
猜你喜欢
  • 2020-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多