映射

映射操作

更新字段映射

一般情况下对现有字段的映射不会更新,

新的属性被添加到对象数据类型的字段

新的多域字段被添加到现有的字段

doc_values可以被禁用

增加了ignore_above参数

 

字符串类型

string类型在ElasticSearch 旧版本中使用较多,从ElasticSearch 5.x开始不再支持string,由text和keyword类型替代。

text

当一个字段是要被全文搜索的,比如Email内容、产品描述,应该使用text类型。

设置text类型以后,字段内容会被分析,在生成倒排索引以前,字符串会被分析器分成一个一个词项。text类型的字段不用于排序,很少用于聚合。

keyword

keyword类型适用于索引结构化的字段,比如email地址、主机名、状态码和标签。

如果字段需要进行过滤(比如查找已发布博客中status属性为published的文章)、排序、聚合。keyword类型的字段只能通过精确值搜索到。

浮点类型

类型 取值范围

doule 64位双精度IEEE 754浮点类型

float 32位单精度IEEE 754浮点类型

half_float 16位半精度IEEE 754浮点类型

scaled_float 缩放类型的的浮点数

对于float、half_float和scaled_float,-0.0和+0.0是不同的值,使用term查询查找-0.0不会匹配+0.0,同样range查询中上边界是-0.0不会匹配+0.0,下边界是+0.0不会匹配-0.0。

其中scaled_float,比如价格只需要精确到分,price为57.34的字段缩放因子为100,存起来就是5734

优先考虑使用带缩放因子的scaled_float浮点类型。

日期字段

日期类型表示格式可以是以下几种:

(1)日期格式的字符串,比如 “2018-01-13” 或 “2018-01-13 12:10:30”

(2)long类型的毫秒数( milliseconds-since-the-epoch,epoch就是指UNIX诞生的UTC时间1970年1月1日0时0分0秒)

(3)integer的秒数(seconds-since-the-epoch)

ElasticSearch 内部会将日期数据转换为UTC,并存储为milliseconds-since-the-epoch的long型整数。

日期类型不用设置分词器。 通常日期类型的字段用于排序。

复制代码
#给example索引新增一个birthday字段,类型为date, 格式可以是yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss
#添加日期类型的映射
PUT test_label_supplier/docs/_mapping
{
  "properties": {
    "birthday": {
      "type": "date",
      "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis",
      "ignore_malformed": false,
      "null_value": null
    }
  }
}
View Code
复制代码

解析说明:

format。通过format设置日期格式,常见的可以设置成年月日时分秒、年月日及毫秒值三种格式。

ignore_malformed。默认值false。如果为true,则忽略格式错误的数字。如果为false(默认值),则格式错误的数字将引发异常并拒绝整个文档。

null_value。默认是null。接受采用配置格式之一的日期值作为该字段,以替换任何显式的空值。默认为null,这意味着该字段被视为丢失。

https://blog.csdn.net/weixin_39723544/article/details/104237033

ignore_above

创建 mapping 时,可以为字符串(专指 keyword) 指定 ignore_above ,用来限定字符长度。超过 ignore_above 的字符会被存储,但不会被索引。

注意,是字符长度,一个英文字母是一个字符,一个汉字也是一个字符。

在动态生成的 mapping 中,keyword类型会被设置ignore_above: 256。

ignore_above 可以在创建 mapping 时指定。

https://www.letianbiji.com/elasticsearch/es7-ignore-above.html

https://blog.csdn.net/Z446136354/article/details/97245114

https://blog.csdn.net/ifenggege/article/details/86103918

ES 的数据结构

ES 存储的数据字段类型很丰富,主要有:核心类型、复合类型和特殊类型

一级分类二级分类具体类型
核心类型 字符串类型 string, text, keyword
整型类型 integer, long, short, byte
浮点类型 double, float, half_float, scaled_float
逻辑类型 boolean
日期类型 date
范围类型 range(integer_range, float_range, long_range, double_range, date_range)
二进制类型 binary
复合类型 对象类型 object
嵌套类型 nested
地理类型 地理坐标类型 Geo-point
地理地图 Geo-shape
特殊类型 IP 类型 ip
自动补全类型 completion
统计类型 token_count
附件类型 attachement
过滤器类型 percolator

字段类型说明:

string 类型在旧版本使用较多,从 5.x 开始不再支持 string, 而用 text 和 keyword 替代,

text 类型表明,当一个字段是要被全文搜索的,比如Email内容、产品描述,应该使用text类型,

设置text类型以后,字段内容会被分析和分词,在生成倒排索引以前,字符串会被分析器分成一个一个词项。

Keyword 类型适用于索引结构化得字段,keyword类型的字段只能通过精确值搜索到。

nested 嵌套类型是 object 数据类型的专用版本,允许对象数据可以彼此独立查询的方式索引。

专用于存储 JSON 类型数据,可以通过 JSON 内部字段进行查询。

geo_point 类型存储的是经纬度数值,可以按距离对文档进行排序和过滤,而位置距离计算都可以通过查询 ES 得出。

es mapping设置之dynamic

 

设置mapping的时候dynamic可以限制陌生字段,

 

true:遇到陌生字段,就进行dynamic mapping
false:遇到陌生字段,就忽略
strict:遇到陌生字段,就报错

参考:

ElasticSearch 四种字段类型详解(周末加油站

ElasticSearch 中的地理类型和特殊类型,这个周末圆满了!

ElasticSearch 23 种映射参数详解

ElasticSearch数据类型Object介绍

elasticsearch 之 _source字段

elasticsearch数据类型Alias介绍

 

 

 

posted @   弱水三千12138  阅读(283)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· ASP.NET Core - 日志记录系统(二)
· .NET 依赖注入中的 Captive Dependency
· .NET Core 对象分配(Alloc)底层原理浅谈
· 聊一聊 C#异步 任务延续的三种底层玩法
· 敏捷开发:如何高效开每日站会
阅读排行:
· 终于决定:把自己家的能源管理系统开源了!
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(一):从.NET IoT入
· C#实现 Winform 程序在系统托盘显示图标 & 开机自启动
· ASP.NET Core - 日志记录系统(二)
· 实现windows下简单的自动化窗口管理
点击右上角即可分享
微信分享提示