建立合適的索引不只能夠節約存儲資源, 還能夠優化咱們的查詢,減小內存的使用。sql
存儲優化方式以下:json
每個字段都會佔用硬盤資源,越少字段的索引,數據佔用的存儲空間就少。文檔量少也許還看不出效果,當文檔量幾億的時候,節約的硬盤空間仍是很客觀的。app
text類型的字段相比與keyword,date,long等佔用更多的存儲空間不說,查詢,排序,聚合都沒有其餘類型高效。因此在不使用分詞效果的時候,字段儘可能使用其餘類型。curl
會消耗許多磁盤空間,來計算在一個字段上,文檔的相關性(_scoring)。若是該字段只是用來filtering或者聚合(aggregation) ,就能夠設置爲false。elasticsearch
要用到聚合的text字段,必須把fielddata設置爲true. 排序或者聚合的時候,fielddata會把全部內容加載到內存,一旦分析字符串被加載到 fielddata ,他們會一直在那裏,直到被驅逐(或者節點崩潰),因此會比較消耗內存。優化手段以下:優化
curl -XPUT 'localhost:9200/index-test' -H 'Content-Type: application/json' -d' { "mappings": { "doc": { "properties": { "sql": { "type": "text", "fielddata": true, "fielddata_frequency_filter": { "min": 0.01, "min_segment_size": 300 }, "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } }, "lock_time": { "type": "double" }, "rows_sent": { "type": "long" }, "host": { "type": "text", "norms": false }, "time_local": { "type": "date" }, "user": { "type": "keyword" } } } } } '