Graylog: 问题原因
本文件是数据映射问题指南的一部分。您可以在这里查看完整指南:如何解决 Graylog 索引数据映射问题。
👋 欢迎阅读 Stackhero 文档!
Stackhero 提供现成的 Graylog 云 解决方案,具有众多优势,包括:
- 包含无限制和专用的 SMTP 电子邮件服务器。
- 只需点击即可轻松完成更新。
- 使用 HTTPS 保护的可定制域名(例如,https://logs.your-company.com)。
- 由专用私有 VM提供的最佳性能和强大安全性。
节省时间并简化您的生活:只需 5 分钟即可试用 Stackhero 的 Graylog 云托管 解决方案!
此问题源自 OpenSearch 的动态映射(dynamic mapping)功能。动态映射会根据写入索引的第一个文档自动确定每个字段的数据类型。一旦数据类型被设定,就会被“锁定”,后续如果有文档该字段的数据类型不一致,就会被拒绝,导致 mapper parsing exception。
当新索引被创建时,第一个文档会定义索引的映射。例如,如果该文档的 "level" 字段值为 3(数值类型),OpenSearch 会将 "level" 字段的数据类型设为 "long"(数值类型)。如果之后有文档发送到 Graylog,"level" 字段的值为 "error"(字符串类型),则会因为数据类型与最初设定的不一致而被拒绝。这会触发 mapper_parsing_exception 错误,原因是 failed to parse field [level] of type [long] in document with id 'xxx'.
如果不同文档中同一字段数据类型不一致,任何字段都可能出现此类问题。