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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM