建立合适的索引不只能够节约存储资源, 还能够优化咱们的查询,减小内存的使用。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" } } } } } '