es Elastic search 解决 object 转String 问题,规避 字段冲突

在es 收集日志的时候,比如A 日志 为 message.msg : “hello,world”, B 日志记录为  message.msg : {“key” : “value”}  这样在 ES 中 正常是 没法存储 到同一个 字段里面的,也就是说,两条日志 必然会有一条被丢掉,这个问题,几乎可以说是ES的核心问题。

有一种解决办法,就是通过设置mapping 的  动态模板,然后将  object disable 掉,具体设置为


"dynamic_templates" : [
{
"messageToStr" : {
"path_match" : "message.*",
"match_mapping_type" : "object",
"mapping" : {
"enabled" : false,
"type" : "object"
}
}
}
]

这样的话, 匹配到 message.* 下面的东西 如果是一个object ,那则object 不会被解析,也就是能存储进来,但是无法被查询解析,里面的东西只能展示,不能索引,这个方案不完美,但是还能接受。

Leave a comment

Your email address will not be published.

*