**背景:**由于日志输出调整,ES出现了很多如下的报错,这个issue可以在这个github地址找到,另外还有5.0版本关于这个问题的说明。 我的ES版本为:5.0.0(直接curl yourip:9200就可以看到)
This is to prevent mapping explosion when dynamic keys such as UUID are used as field names. index.mapping.total_fields.limit specifies the total number of fields an index can have. An exception will be thrown when the limit is reached. The default limit is 1000. Value 0 means no limit. This setting is runtime adjustable – – – 以上摘自yanjunh对于该issue的答复
报错如下:
- 报错信息
[2017-11-18T00:00:03,102][DEBUG][o.e.a.b.TransportShardBulkAction] [vpc1-ip-1] [bilogs-logics-202.2017.11.17][2] failed to execute bulk item (index) …omitted…java.lang.IllegalArgumentException: Limit of total fields [1000] in index [bilogs-logics-log] has been exceeded
解决方案:
**说明:**对于已经建立的索引可以通过设置fields进行修复,对于之后的将建立的索引通过设置template进行设置
- 对于已经建立的索引
1 2 3 4 5 6 7 8 9 10 11 12curl -XPUT yourEShost:port/your_index_name/_settings -d '{"index.mapping.total_fields.limit": 0}' #以上表示对于‘your_index_name’这个索引设置fields为无限制,默认为1000 curl -XPUT 10.0.1.1:9200/*/_settings -d '{"index.mapping.total_fields.limit": 50000}' #这个表示对所有index的fields的limit设置为50000 curl 10.0.1.1:9200/_cat/indices/*?pretty #查看所有索引,查看指定索引将*换为索引名称即可 curl -XGET 10.0.1.1:9200/_all/_settings?pretty #查看所有索引的设置 curl 10.0.1.1:9200/bilogs-logics-202.2017.11.21/_settings?pretty #查看单个索引的设置 curl 10.0.1.1:9200/bilogs-logics-202.2017.11.23/_mapping?pretty #查看单个索引的map - 对于未创建的索引,可以通过模板设置
1 2 3 4 5 6 7 8 9 10 11curl -XPUT '10.0.1.1:9200/_template/all ' -d ' { "template": "*", "settings": { "index.mapping.total_fields.limit": 50000, "refresh_interval": "30s" } }' #设置template的setting, curl -XGET 10.33.3.191:9200/_template/*?pretty #查看所有模板的设置,使用了*匹配,如果看指定的模板将*换成对应模板名即可,另外这里可以看到每个模本都有一个"order"字段,这个字段的数值越低,优先级越高,优先级高的模板会覆盖优先级低的模板