网站在线推广,wordpress首页仅显示指定分类文章,北京seo代理商,海尔商务网站建设上一篇mapping文章我们知道数字类型和日期类型要精确查找#xff0c;以及mapping的两个重要的作用。
所以创建索引的时候,是不是可以预先定义字段的类型以及相关属性#xff0c;这样就能够把日期字段处理成日期#xff0c;把数字字段处理成数字#xff0c;把字符串字段处理…上一篇mapping文章我们知道数字类型和日期类型要精确查找以及mapping的两个重要的作用。
所以创建索引的时候,是不是可以预先定义字段的类型以及相关属性这样就能够把日期字段处理成日期把数字字段处理成数字把字符串字段处理字符串值等。
支持的数据类型
(1)核心数据类型Core datatypes 字符型stringstring类型包括 text 和 keyword text类型被用来索引长文本在建立索引前会将这些文本进行分词转化为词的组合建立索引。允许es来检索这些词语。text类型不能用来排序和聚合。 Keyword类型不需要进行分词可以被用来检索过滤、排序和聚合。keyword 类型字段只能用本身来进行检索 数字型long, integer, short, byte, double, float 日期型date 布尔型boolean 二进制型binary
(2)复杂数据类型Complex datatypes 数组类型Array datatype数组类型不需要专门指定数组元素的type例如 字符型数组: [ one, two ] 整型数组[ 1, 2 ] 数组型数组[ 1, [ 2, 3 ]] 等价于[ 1, 2, 3 ] 对象数组[ { name: Mary, age: 12 }, { name: John, age: 10 }] 对象类型Object datatype_ object _ 用于单个JSON对象 嵌套类型Nested datatype_ nested _ 用于JSON数组
(3)地理位置类型Geo datatypes 地理坐标类型Geo-point datatype_ geo_point _ 用于经纬度坐标 地理形状类型Geo-Shape datatype_ geo_shape _ 用于类似于多边形的复杂形状
(4)特定类型Specialised datatypes IPv4 类型IPv4 datatype_ ip _ 用于IPv4 地址 Completion 类型Completion datatype_ completion _提供自动补全建议 Token count 类型Token count datatype_ token_count _ 用于统计做了标记的字段的index数目该值会一直增加不会因为过滤条件而减少。 mapper-murmur3 类型通过插件可以通过 _ murmur3 _ 来计算 index 的 hash 值 附加类型Attachment datatype采用 mapper-attachments 插件可支持_ attachments _ 索引例如 Microsoft Office 格式Open Document 格式ePub, HTML 等。 支持的属性
store:false//是否单独设置此字段的是否存储而从_source字段中分离默认是false只能搜索不能获取值
index: true//分词不分词是false设置成false字段将不会被索引 analyzer:ik//指定分词器,默认分词器为standard analyzer
boost:1.23//字段级别的分数加权默认值是1.0
doc_values:false//对not_analyzed字段默认都是开启分词字段不能使用对排序和聚合能提升较大性能节约内存
fielddata:{format:disabled}//针对分词字段参与排序或聚合时能提高性能不分词字段统一建议使用doc_value
fields:{raw:{type:string,index:not_analyzed}} //可以对一个字段提供多种索引模式同一个字段的值一个分词一个不分词 ignore_above:100 //超过100个字符的文本将会被忽略不被索引
include_in_all:ture//设置是否此字段包含在_all字段中默认是true除非index设置成no选项
index_options:docs//4个可选参数docs索引文档号,freqs文档号词频positions文档号词频位置通常用来距离查询offsets文档号词频位置偏移量通常被使用在高亮字段分词字段默认是position其他的默认是docs
norms:{enable:true,loading:lazy}//分词字段默认配置不分词字段默认{enable:false}存储长度因子和索引时boost建议对需要参与评分字段使用 会额外增加内存消耗量
null_value:NULL//设置一些缺失字段的初始化值只有string可以使用分词字段的null值也会被分词
position_increament_gap:0//影响距离查询或近似查询可以设置在多值字段的数据上火分词字段上查询时可指定slop间隔默认值是100
search_analyzer:ik//设置搜索时的分词器默认跟ananlyzer是一致的比如index时用standardngram搜索时用standard用来完成自动提示功能
similarity:BM25//默认是TF/IDF算法指定一个字段评分策略仅仅对字符串型和分词类型有效
term_vector:no//默认不存储向量信息支持参数yesterm存储with_positionsterm位置,with_offsetsterm偏移量with_positions_offsets(term位置偏移量) 对快速高亮fast vector highlighter能提升性能但开启又会加大索引体积不适合大数据量用 映射的分类
(1)动态映射
当ES在文档中碰到一个以前没见过的字段时它会利用动态映射来决定该字段的类型并自动地对该字段添加映射。
可以通过dynamic设置来控制这一行为它能够接受以下的选项 true默认值。动态添加字段 false忽略新字段 strict如果碰到陌生字段抛出异常
dynamic设置可以适用在根对象上或者object类型的任意字段上。 这里我们重点讲一下object类型
#object类型
PUT /1ib5/person/1
{name:Tom ,age:25,birthday:1985-12-12,address:{country: china,province:guangdong,city:shenzhen}
}我们看下address这个字段这个字段下包含了三个字段 这个就是object类型我们就添加一下成功created 我们查看下自动创建的映射mapping
GET /1ib5/person/_mapping
{1ib5 : {mappings : {person : {properties : {address : {properties : {city : {type : text,fields : {keyword : {type : keyword,ignore_above : 256}}},country : {type : text,fields : {keyword : {type : keyword,ignore_above : 256}}},province : {type : text,fields : {keyword : {type : keyword,ignore_above : 256}}}}},age : {type : long},birthday : {type : date},name : {type : text,fields : {keyword : {type : keyword,ignore_above : 256}}}}}}}
}我们口语看见address的描述红色框框都是address的描述 #如果是复杂的数组包含对象
PUT /lib6/person/1
{persons :[{name:lisi,age:27},{name:wangwu,age:26},{name:zhangsan,age:23}]
}#底层存储.
{
persons.name:[lisi, wangwu , zhangsan],
persons.age:[27,26,23]
}