ES索引瘦身 禁用_source后需要设置field store才能获取数据 否则无法显示搜索结果
在默认情况下,开启_all和_source
这样索引下来,占用空间很大.

根据我们单位的情况,我觉得可以将需要的字段保存在_all中,然后使用IK分词以备查询,其余的字段,则不存储.
并且禁用_source字段.(也可以通过_source includes或者excludes 指定或者排除字段)
{ "mappings": { "sod_song_ksc": { "dynamic_templates": [ { "all_field": { "mapping": { "index": "no", "store": "yes", "type": "{dynamic_type}", "include_in_all": false }, "match": "*" } } ], "_source": { "enabled": false }, "_all": { "enabled": true, "analyzer": "ik" }, "properties": { "SongID": { "type": "long", "store": "yes", "index": "not_analyzed", "include_in_all": true } } } } }
这里采用了动态映射的功能(dynamic_templates),符合条件的字段,直接采用动态映射中预先的配置.
这里动态映射匹配所有字段,将_all禁用。
然后有需要的字段,再逐个开启.
索引之后,效果非常明显.磁盘占用减少了一半还多.
动态映射 {name}表示文档中原始的字段名称,{dynamic_type}表示原始文档的类型

动态映射在实际使用中,除了匹配字段名称,还可以匹配类型。
"match_mapping_type": "string"
动态映射如果设置在 "_default_" 则表示规则应用在所有类型的索引上.
虽然禁用_source,指定加入_all的字段,可以大幅减少磁盘空间占用,
但是查询会麻烦一些。原来可以直观看到的数据没有了.

而且默认情况下,没有足够的信息显示.

所以查询显得麻烦一些,使用如下的方式:

转自:http://m.blog.itpub.net/29254281/viewspace-2103996/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」