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./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控制界面出现以下信息表明修改成功。 |
|
来自: 好闺女瑶瑶 > 《ElasticSearch》