为什么Elasticsearch ignore_malformed将格式错误的值添加到索引?

问题描述 投票:0回答:1

我正在C#中使用Serilog创建一个日志文件,该文件由Filebeat提取,并通过Logstash发送到Elasticsearch。 Elasticsearch索引符合ECS 1.5。

日志文件有时包含“ host.ip”字段的错误值,它可能包含“ localhost:5000”之类的值。由于无法将类似这样的字符串转换为ip编号,因此导致日志记录被拒绝。所有这些都是预期的,并且更正日志文件的问题不在此问题的范围内。

我决定在索引级别添加“ ignore_malformed:true”设置。之后,日志帖子不再被拒绝-我可以在Elasticsearch中找到它们。因此,该设置被证明是有效的。但是字段“ host.ip”现在实际上包含格式错误的值“ localhost:5000”。我什至看不到这是怎么可能的,这不是我所期望或想要的。

enter image description here

根据“ ignore_malformed”的记录,看起来好像应该丢弃与字段类型不匹配的值-不写入字段。我也没有找到添加的“ _ignored”字段。

好像将ignore_malformed设置为true实际上允许将格式错误的数据放入索引中,而不是将其删除。我期望/希望该字段为空,如果该值格式错误。这是一个错误,还是我缺少什么?

elasticsearch serilog filebeat
1个回答
1
投票

无论您在源文档中发送的内容将始终存在,ES都不会对其进行修改。但是,您现在指定ignore_malformed的事实意味着ES不会尝试对格式错误的数据建立索引,但是该值仍将在源文档中可见。

© www.soinside.com 2019 - 2024. All rights reserved.