我们通过 Filebeat 将 Kubernetes 集群中运行的各种服务的日志发送到 Elasticsearch。其中一些服务是我们自己开发的,另一些是第三方的。我们在索引中使用动态映射。我们遇到了一个问题,有时来自一个服务的日志使用的字段恰好与来自不同服务的日志共享相同的名称,并且该字段中的数据类型不同。例如,在一个服务的日志中,该url
字段可能是一个字符串,但在另一个服务中,它可能是一个结构化对象。然后我们在摄取日志时遇到错误,说:
{
"type": "mapper_parsing_exception",
"reason": "object mapping for [url] tried to parse field [url] as object, but found a concrete value"
}
我们可以使用什么策略来避免这些冲突?