ElasticSearch常见问题1:java.lang.IllegalArgumentException:Limit of total fields [1000] has been exceeded

1.问题描述

从MongoDB中向ElasticSearch中导入数据时,导入数据界面和ElasticSearch控制界面分别出现以下异常:

导入程序出现以下异常:

ERROR 2021/03/10 17:06:00 index: [wdlacs__devicetest _doc 60488289290c6fd5947a6028 {illegal_argument_exception Limit of total fields [1000] has been exceeded     %!s(bool=false) map[] [] []}], type: %!s(MISSING), _id: %!s(MISSING), error: %!v(MISSING)

ElasticSearch控制界面出现以下异常:

java.lang.IllegalArgumentException: Limit of total fields [1000] has been exceeded

2.问题原因

原文地址:https://www.elastic.co/guide/en/elasticsearch/reference/5.4/mapping.html#mapping-type

mapping 做了映射保护,防止mapping 爆炸。

index.mapping.total_fields.limit:本设置允许您限制可手动或动态创建的字段映射的数量,以防止错误的文档导致映射爆炸,索引中的最大字段数。默认值为1000。

index.mapping.depth.limit:字段的最大深度,以内部对象的数量来衡量。例如,如果所有字段都是在根对象级别定义的,则深度为1;如果有一个对象映射,则深度为 2,等等。默认值为20。

index.mapping.nested_fields.limit:nested索引中的最大字段数,默认为50。使用100个嵌套字段索引1个文档实际上索引101个文档,因为每个嵌套文档都被索引为单独的隐藏文档。

3.解决办法

使用以下指令将index.mapping.total_fields.limit从默认的1000修改为50000,其中wdlacs__devicetest为需要修改的索引名称,可以根据上图中出现异常错误信息获得。

curl -H "Content-Type: application/json" -XPUT http://10.8.20.137:9200/wdlacs__devicetest/_settings -d '{"index.mapping.total_fields.limit": 50000}'

ElasticSearch控制界面出现以下信息表明修改成功。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值