Graylog: 問題原因
此文件屬於資料對應問題指南的一部分。請在此處查看完整指南:如何解決 Graylog 索引資料對應問題。
👋 歡迎瀏覽 Stackhero 文件
Stackhero 提供全託管的 Graylog cloud 方案,專為高效與簡易而設。您可以:
- 依賴隨服務附送的無限量、專屬 SMTP 電郵伺服器。
- 只需一鍵即可輕鬆更新,無需手動操作。
- 使用受 HTTPS 保護的自訂網域名稱(例如 https://logs.your-company.com),讓您的團隊安全直接存取。
- 於專屬私人基礎設施上享有卓越效能及安全性,無需與他人共用資源,亦無「嘈吵鄰居」問題。
專注於您的數據,而非工具管理:只需數分鐘,即可開始使用 Stackhero 的 Graylog cloud hosting 方案。
這個問題源於 OpenSearch 的動態對應(dynamic mapping)功能。動態對應會根據寫入索引的第一份文件,自動判斷每個欄位的資料類型。一旦資料類型被設定,該欄位的型別就會被「鎖定」,之後如果有文件傳入同一欄位但資料型別不同,就會被拒絕,並產生 mapper parsing exception。
當新索引建立時,第一份文件會決定索引的 mapping。例如,如果該文件的「level」欄位值為 3(數值),OpenSearch 會將「level」的資料型別設定為「long」(數值型別)。如果之後有文件傳送到 Graylog,該文件的「level」欄位值為「error」(字串型別),就會因為資料型別不一致而被拒絕,並觸發 mapper_parsing_exception,錯誤訊息為 failed to parse field [level] of type [long] in document with id 'xxx'.
如果不同文件之間欄位的資料型別不一致,這個問題可以發生在任何欄位上。