ElasticSearch 之 防止Mapping爆炸

1 故事背景

某天同事跟我說,ES數據不能進行插入,查詢集羣日誌html

requests java.lang.IllegalArgumentException: Limit of total fields [1000] in index [my_index] has been exceededjava

2 Mapping 說明

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

mapping 作了映射保護,防止mapping 爆炸elasticsearch

如下設置容許您限制可手動或動態建立的字段映射的數量,以防止錯誤的文檔致使映射爆炸:ide

index.mapping.total_fields.limit:ui

索引中的最大字段數。默認值爲1000設計

index.mapping.depth.limit:日誌

字段的最大深度,之內部對象的數量來衡量。例如,若是全部字段都是在根對象級別定義的,則深度爲1。若是有一個對象映射,則深度爲 2,等等。默認值爲20。code

index.mapping.nested_fields.limithtm

nested索引中的最大字段數,默認爲50。使用100個嵌套字段索引1個文檔實際上索引101個文檔,由於每一個嵌套文檔都被索引爲單獨的隱藏文檔

3 臨時解決方案修改setting

PUT my_index/_settings
{
    "index.mapping.total_fields.limit": 2000
}

此方法治標不治本,也是極力不推薦,出現這種狀況徹底由於在設計mapping的時候考慮欠缺,業務場景不明確,是否適合此mapping設計

相關文章
相關標籤/搜索