Elasticsearch解决字段膨胀问题

背景

Elasticsearch映射如果不进行特殊设置,则默认为dynamic:truedynamic:true实际上支持不加约束地动态添加字段。这样对某些日志场景,可能会产生大量的未知字段。字段如果持续激增,就会达到Elasticsearch映射层面的默认上限,对应设置和默认大小为index. mapping.total_fields.limit:1000。我们把这种非预期字段激增的现象称为字段膨胀。

Flattened类型的产生

如前分析,将dynamic设置为false或者strict不是普适的解决方案。例如,在日志场景中,虽然期望动态添加字段,但strict过于严格会导致新字段数据拒绝写入,而dynamic:true过于松散会导致字段膨胀。这就导致同时满足上述两个方面的Flattened字段的诞生。

Flattened类型最早发布于Elasticsearch 7.3这一版本。

一句话来说,Flattened字段就是用来解决字段膨胀问题的。

Flattened类型的定义

PUT my_index_0517
{
    "mappings": {
        "properties": {
            "host": {
                "type": "flattened"
            }
        }
    }
}

Flattened的本质是将原来一个复杂的Object或者Nested嵌套多字段类型统一映射为扁平的单字段类型。这里要强调的是:不管原来内嵌多少个字段、内嵌多少层,利用Flattened类型都能一下“拉平”

基于Flattened类型插入数据

基于上面所说的映射

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值