zoukankan      html  css  js  c++  java
  • 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/
  • 相关阅读:
    Base64的解码和编码
    [WebService]代理类中对枚举类型的序列化
    Linq中的Where与SkipWhile
    Html 5中自定义data*特性
    实用TSQL之生成当前索引数据库中的外键上
    使用Post/Redirect/Get实现Asp.net防止表单重复提交
    用SquishIt最小化Css与Javascript文件
    Asp.net MVC 3 中 Unobtrusive javascript 与Ajax
    HTML5中custom data*特性与asp.net mvc 3 表单验证
    实现Asp.net MVC中AjaxOnly特性
  • 原文地址:https://www.cnblogs.com/bonelee/p/6432496.html
Copyright © 2011-2022 走看看