Elasticsearch总支持哪些数据类型?
String类型: 类似java中的String字符串,共分为text何keyword两种类型:
text:会分词,如果使用text类型储存,我们不去特殊定义它的分词器,那么ES就会使用默认的分词器 standard
keyword:不会分词
数字类型
类型 | 说明 |
---|---|
byte | 有符号的8位整数, 范围: [-128 ~ 127] |
short | 有符号的16位整数, 范围: [-32768 ~ 32767] |
integer | 有符号的32位整数, 范围: [−2^31 ~ 2^31-1] |
long | 有符号的64位整数, 范围: [−2^63 ~ 2^63-1] |
float | 32位单精度浮点数 |
double | 64位双精度浮点数 |
half_float | 16位半精度IEEE 754浮点类型 |
scaled_float | 缩放类型的的浮点数, 比如price字段只需精确到分, 57.34缩放因子为100, 存储结果为5734 |
日期 可以是:
- 包含格式化日期的字符串, “2018-10-01”, 或"2018/10/01 12:10:30"
- 代表时间毫秒数的长整型数字
- 代表时间秒数的整数
** 布尔** 可以是表示真、假的字符串或数字:
- 真值: true, “true”, “on”, “yes”, “1”…
- 假值: false, “false”, “off”, “no”, “0”, “”(空字符串), 0.0, 0
二进制型 :二进制类型是Base64编码字符串的二进制值, 不以默认的方式存储, 且不能被搜索
范围类
类型 | 说明 |
---|---|
integer_range | −2^31 ~ 2^31−1 |
long_range | −2^63 ~ 2^63−1 |
float_range | 32位单精度浮点型 |
double_range | 64位双精度浮点型 |
date_range | 64位整数, 毫秒计时 |
ip_range | IP值的范围, 支持IPV4和IPV6, 或者这两种同时存在 |
复杂数据类型
数组类型: ES中没有专门的数组类型, 直接使用[]定义即可; 数组中所有的值必须是同一种数据类型, 不支持混合数据类型的数组
对象类型: 文档可以包含内部对象, 内部对象也可以包含内部对象.
嵌套类型: 嵌套类型是对象数据类型的一个特例, 可以让array类型的对象被独立索引和搜索
地理数据类型
地理点类型,用于存储地理位置的经纬度对, 可用于:
- 查找一定范围内的地理点;
- 通过地理位置或相对某个中心点的距离聚合文档;
- 将距离整合到文档的相关性评分中;
- 通过距离对文档进行排序.
地理形状类型,存储多边形的复杂形状
特定类型
IP类型: IP类型的字段用于存储IPv4或IPv6的地址, 本质上是一个长整型字段
计数数据类型: token_count类型用于统计字符串中的单词数量. 本质上是一个整数型字段, 接受并分析字符串值, 然后索引字符串中单词的个数
自动补全类型:主要为查询建议提供能力
别名类型: 为索引中的一个字段定义了一个备用名