我的集群每天会根据日期创建一百多个新的索引。
并且有些索引写入的日志来自于很多个不同的应用程序,它们字段各不相同,mapping不是一次写入就固定下来,而是在一段时间内会频繁地更新。
现在我遇到的问题是,虽然已经预创建了第二天的索引,但每天0点,当所有数据都往新日期的索引里写时,集群还是经常卡住,数据在一段时间内无法写入,报 failed to process cluster event (put-mapping) within 30s 错误。
看错误提示,应该是这段时间各种不同的日志写入索引,索引的mapping字段在不停地更新,导致master处理不过来,写日志到es的进程在比较长的时间内无法写日志,从而导致一系列问题。
针对这种情况,我能想到的是对所有mapping,也按照前一天的配置,预先做设置,但这样如果索引模板中的mapping配置发生变化,也没办法及时更新。不知道有没有什么好的思路去解决。
并且有些索引写入的日志来自于很多个不同的应用程序,它们字段各不相同,mapping不是一次写入就固定下来,而是在一段时间内会频繁地更新。
现在我遇到的问题是,虽然已经预创建了第二天的索引,但每天0点,当所有数据都往新日期的索引里写时,集群还是经常卡住,数据在一段时间内无法写入,报 failed to process cluster event (put-mapping) within 30s 错误。
看错误提示,应该是这段时间各种不同的日志写入索引,索引的mapping字段在不停地更新,导致master处理不过来,写日志到es的进程在比较长的时间内无法写日志,从而导致一系列问题。
针对这种情况,我能想到的是对所有mapping,也按照前一天的配置,预先做设置,但这样如果索引模板中的mapping配置发生变化,也没办法及时更新。不知道有没有什么好的思路去解决。
9 个回复
kennywu76 - Wood
赞同来自: everything 、laoyang360 、tongyuebin 、shyshy
我们对于日志数据的mapping是设置"dynamic": "false",不允许动态创建的。 所以新增的字段初始接入的时候是无法检索的,需要用户在我们提供的UI上自助为新字段定义类型,新类型才会被写入mapping里。
匿名用户
赞同来自: tongyuebin
为什么要频繁的更新mapping啊?更新策略是什么呢?
什么时候更新?
根据数据自动更新吗?
数据中增加一个字段,mapping对应加一个?
数据少一个字段,mapping对应少一个?
wangxinrong
赞同来自:
匿名用户
赞同来自:
Charele - Cisco4321
赞同来自:
不知道你用的是什么方式把日志插到ES里的?
你可以试着把超时设长一点看看,比如5分种。
God_lockin
赞同来自:
wangxinrong
赞同来自:
wangxinrong
赞同来自:
匿名用户
赞同来自: