我尝试导入 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 似乎放弃了尝试从日志文件导入记录。如何告诉 logstash 忽略此异常并继续尝试从日志文件中导入其他记录?