elasticsearch语法学习

语法demo:

PUT es-demo 
{
    "settings":{
        "number_of_shards":5,
        "number_of_replicas":1
    },
    "mappings":{
        "TypeName":{
            "dynamic":"strict",
            "properties":{
                "title":{
                        "type":"string",
                        "store":"yes",
                        "index":"analyzed",
                        "analyzer": "ik_max_word",
                        "search_analyzer": "ik_max_word"
                    }
            }
        }
    }
}

 type字段类型,所有得字段都设置成了string,是因为在查询和编码过程中,有些类型不能很好的被转换,例如boolean.可以是

type类型可以是(text、long、short、date、integer、object等)

store是否存储,属性有yes/no,无论那种都会被存储,但如果设置成no,在查询的时候是无法用此属性作为查询项的,基于拓展和业务方便维护,建议使用yes

index是否索引,属性有not_analyzed(分词不分析)、analyzed(分词分析)、no(不分析不分词)

analyzer使用哪种分词器,在安装es的时候会自己安装分词器,例如IK分词器,在此指定分词的时候使用的是哪种分词器

search_analyzer使用哪种分词器,但不是在入库的时候,而是在做查询的时候使用哪种分词器

ignore_above对超过 ignore_above 的字符串,analyzer 不会进行处理;所以就不会索引起来。导致的结果就是最终搜索引擎搜索不到了。这个选项主要对 not_analyzed

字段有用,这些字段通常用来进行过滤、聚合和排序。而且这些字段都是结构化的,所以一般不会允许在这些字段中索引过长的项。

format日期格式要求,例如设置为"yyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis" 

dynamic表示是否使用动态映射,属性有
{
    dynamic:true/false/strict
    (true默认值,动态添加字段,false忽略新字段,strict如果碰到陌生字段,抛出异常)
}
settings表示设置{
    num_of_shards:设置分片数量,默认为5
    num_of_replicas:设置副本数量,默认为1
}
"properties":{
                "title":{
                        "type":"string",//type类型为(text、long、short、date、integer、object)
                        "store":"yes",//值为yes/no,设置为no时在查询的时候是无法用此属性作为查询项的
                        "index":"analyzed",//属性有not_analyzed(分词不分析)、analyzed(分词分析)、no(不分析不分词)
                        "analyzer": "ik_max_word",//使用哪种分词器
                        "search_analyzer": "ik_max_word"//使用哪种分词器,但不是在入库的时候,而是在做查询的时候使用哪种分词器
                    }
            }

相关推荐